Datagridview - 如何设置所选行的箭头?
Datagridview - How to set the arrow of selected row?
我有一个 DataGridView,我在其中为行创建了 MoveUp 和 MoveDown 函数。但是当我交换两行并更改选定的行时,尽管我将选定的行设置在交换的行上,但选定行的箭头仍停留在前一个位置。我可以更改正确行上的箭头吗?这只是一个小细节,但我想知道是否可以做到。
我有这个代码:
private void moveUp()
{
if (dataGridView1.RowCount > 0)
{
if (dataGridView1.SelectedRows.Count > 0)
{
int rowCount = dataGridView1.Rows.Count;
int index = dataGridView1.SelectedCells[0].OwningRow.Index;
if (index == 0)
{
return;
}
var temp = listApp[index];
var temp2 = listApp[index - 1];
listApp.Remove(temp);
listApp.Remove(temp2);
listApp.Insert(index-1, temp);
listApp.Insert(index, temp2);
dataGridView1.DataSource = null;
dataGridView1.DataSource = listApp;
dataGridView1.SelectedCells[0].Selected = false;
//dataGridView1.Rows[index].Selected = false;
dataGridView1.Rows[index-1].Selected = true;
}
}
}
这是交换两行后的屏幕。
或者有更好的方法吗?
好的,我自己找到了解决办法。设置dataGridView1.CurrentCell就够了。也许对某人有用。
解决方案在这里:
private void moveUp()
{
if (dataGridView1.RowCount > 0)
{
if (dataGridView1.SelectedRows.Count > 0)
{
int rowCount = dataGridView1.Rows.Count;
int index = dataGridView1.SelectedCells[0].OwningRow.Index;
if (index == 0)
{
return;
}
var temp = listApp[index];
var temp2 = listApp[index - 1];
listApp.Remove(temp);
listApp.Remove(temp2);
listApp.Insert(index-1, temp);
listApp.Insert(index, temp2);
dataGridView1.DataSource = null;
dataGridView1.DataSource = listApp;
dataGridView1.SelectedCells[0].Selected = false;
dataGridView1.Rows[index-1].Selected = true;
dataGridView1.CurrentCell = dataGridView1[1, index - 1];
}
}
}
我有一个 DataGridView,我在其中为行创建了 MoveUp 和 MoveDown 函数。但是当我交换两行并更改选定的行时,尽管我将选定的行设置在交换的行上,但选定行的箭头仍停留在前一个位置。我可以更改正确行上的箭头吗?这只是一个小细节,但我想知道是否可以做到。
我有这个代码:
private void moveUp()
{
if (dataGridView1.RowCount > 0)
{
if (dataGridView1.SelectedRows.Count > 0)
{
int rowCount = dataGridView1.Rows.Count;
int index = dataGridView1.SelectedCells[0].OwningRow.Index;
if (index == 0)
{
return;
}
var temp = listApp[index];
var temp2 = listApp[index - 1];
listApp.Remove(temp);
listApp.Remove(temp2);
listApp.Insert(index-1, temp);
listApp.Insert(index, temp2);
dataGridView1.DataSource = null;
dataGridView1.DataSource = listApp;
dataGridView1.SelectedCells[0].Selected = false;
//dataGridView1.Rows[index].Selected = false;
dataGridView1.Rows[index-1].Selected = true;
}
}
}
这是交换两行后的屏幕。
或者有更好的方法吗?
好的,我自己找到了解决办法。设置dataGridView1.CurrentCell就够了。也许对某人有用。 解决方案在这里:
private void moveUp()
{
if (dataGridView1.RowCount > 0)
{
if (dataGridView1.SelectedRows.Count > 0)
{
int rowCount = dataGridView1.Rows.Count;
int index = dataGridView1.SelectedCells[0].OwningRow.Index;
if (index == 0)
{
return;
}
var temp = listApp[index];
var temp2 = listApp[index - 1];
listApp.Remove(temp);
listApp.Remove(temp2);
listApp.Insert(index-1, temp);
listApp.Insert(index, temp2);
dataGridView1.DataSource = null;
dataGridView1.DataSource = listApp;
dataGridView1.SelectedCells[0].Selected = false;
dataGridView1.Rows[index-1].Selected = true;
dataGridView1.CurrentCell = dataGridView1[1, index - 1];
}
}
}