以编程方式在 DataGridView 中选择行

如何在运行时以编程方式选择 DataGridView中特定范围的行?

271471 次浏览

如果有数据源,可以使用 Select 方法: Http://msdn.microsoft.com/en-us/library/b51xae2y%28v=vs.71%29.aspx

如果数据源中有对象,则使用 linq

没有经过测试,但我认为你可以做到以下几点:

dataGrid.Rows[index].Selected = true;

或者你可以做以下事情(但同样: 未经测试) :

dataGrid.SelectedRows.Clear();
foreach(DataGridViewRow row in dataGrid.Rows)
{
if(YOUR CONDITION)
row.Selected = true;
}
DataGridView.Rows
.OfType<DataGridViewRow>()
.Where(x => (int)x.Cells["Id"].Value == pId)
.ToArray<DataGridViewRow>()[0]
.Selected = true;

在 VisualBasic 中,这样做可以在 DataGridView中选择一行; 选中的行将显示为突出显示的颜色,但请注意光标位置不会更改:

Grid.Rows(0).Selected = True

是否改变光标的位置:

Grid.CurrentCell = Grid.Rows(0).Cells(0)

组合上面的行将定位光标并选择一行。这是在 DataGridView中聚焦和选择一行的标准程序:

Grid.CurrentCell = Grid.Rows(0).Cells(0)
Grid.Rows(0).Selected = True
 <GridViewName>.ClearSelection(); ----------------------------------------------------1
foreach(var item in itemList) -------------------------------------------------------2
{
rowHandle =<GridViewName>.LocateByValue("UniqueProperty_Name", item.unique_id );--3
if (rowHandle != GridControl.InvalidRowHandle)------------------------------------4
{
<GridViewName>.SelectRow(rowHandle);------------------------------------ -----5
}
}
  1. 清除所有以前的选择。
  2. 循环通过需要在网格中选择的行。
  3. 从网格中获取它们的行句柄(注意,这里的网格已经用新行更新了)
  4. 检查行句柄是否有效。
  5. 当有效的行句柄时,选择它。

其中 itemList 是要在网格视图中选择的行的列表。

试试这个:

datagridview.Rows[currentRow].Cells[0];

试试这个:

DataGridViewRow row = dataGridView1.Rows[index row you want];
dataGridView1.CurrentRow = row;

希望这有帮助!