以编程方式在DataGridView中选择一行

Nag*_*dra 94 .net c# datagridview winforms

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

Chr*_*Fin 108

未经测试,但我认为您可以执行以下操作:

dataGrid.Rows[index].Selected = true;
Run Code Online (Sandbox Code Playgroud)

或者您可以执行以下操作(但是agian:未测试):

dataGrid.SelectedRows.Clear();
foreach(DataGridViewRow row in dataGrid.Rows)
{
    if(YOUR CONDITION)
       row.Selected = true;
}
Run Code Online (Sandbox Code Playgroud)

  • 添加一行代码`dataGrid.CurrentCell = dataGrid.Rows [row.Index] .Cells [0];` (15认同)
  • 而不是SelectedRows.Clear()使用datagridview实例的ClearSelection()方法 (13认同)
  • 请注意,如果您的 DataGridView 是“只读” - 那么“SelectedRows.Clear()”将不起作用。 (2认同)
  • @Furkan:那不会做同样的事情。使用 `SelectedRows.Clear()` 仅清除选定的行,但使用 `ClearSelection()` 也会丢失列 => 列选择... (2认同)
  • @Timeless:在测试您的建议时似乎没有触发SelectionChanged事件. (2认同)

Rod*_* T. 28

在Visual Basic中,执行此操作以选择a中的行DataGridView; 所选行将以突出显示的颜色显示,但请注意光标位置不会更改:

Grid.Rows(0).Selected = True
Run Code Online (Sandbox Code Playgroud)

这样做会改变光标的位置:

Grid.CurrentCell = Grid.Rows(0).Cells(0)
Run Code Online (Sandbox Code Playgroud)

组合上面的行将定位光标并选择一行.这是在以下位置聚焦和选择行的标准过程DataGridView:

Grid.CurrentCell = Grid.Rows(0).Cells(0)
Grid.Rows(0).Selected = True
Run Code Online (Sandbox Code Playgroud)

  • 看到: FirstDisplayedScrollingRowIndex (2认同)

小智 12

DataGridView.Rows
    .OfType<DataGridViewRow>()
     .Where(x => (int)x.Cells["Id"].Value == pId)
     .ToArray<DataGridViewRow>()[0]
     .Selected = true;
Run Code Online (Sandbox Code Playgroud)