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


Answers:


126

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

dataGrid.Rows[index].Selected = true;

或者您可以执行以下操作(但再次:未经测试):

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

当心您的DataGridView是read-only-然后SelectedRows.Clear()将无法工作。
Derek W

14
代替SelectedRows.Clear()使用datagridview实例的ClearSelection()方法
Furkan

1
@Furkan:不会做同样的事情。与SelectedRows.Clear()只选定行被清除,但ClearSelection()也列=>列选项丢失...
克里斯托夫·芬克

17
添加一行代码dataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
永恒的

2
@Timeless:在测试您的建议时似乎未触发SelectionChanged事件。
user2430797 '18

34

在Visual Basic中,执行此操作以在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

在网格数据长于网格显示区域的情况下,Grid.Rows(0).Cells(0)非常有用。上面提到的顺序不是必需的,您可以在行/单元格选择中滑动代码[来源:亲自测试]。
BiLaL 2014年

如何将网格移动到选定位置?已选择行,但网格位置不在所选行上。手动滚动显示选定的行。如何迫使网格滚动?
FrenkyB

请参阅:FirstDisplayedScrollingRowIndex
Rodrigo T.

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

0
 <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是在网格视图中要选择的行的列表。




-1

在加载时设置DataGridView的Selected行时,请考虑在DataBindingComplete事件中进行处理,因为默认情况下可以覆盖它。


-1

试试这个:

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

希望有帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.