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

Posted

技术标签:

【中文标题】以编程方式在 DataGridView 中选择一行【英文标题】:Selecting a row in DataGridView programmatically 【发布时间】:2011-09-10 01:11:11 【问题描述】:

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

【问题讨论】:

【参考方案1】:

试试这个:

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

希望对您有所帮助!

【讨论】:

【参考方案2】:

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

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() 将不起作用。 使用 datagridview 实例的 ClearSelection() 方法代替 SelectedRows.Clear() @Furkan:那不一样。使用SelectedRows.Clear() 只会清除选定的行,但使用ClearSelection() 也会丢失列 => 列选择... 添加一行代码dataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0]; @Timeless:在测试您的建议时,似乎没有触发 SelectionChanged 事件。【参考方案3】:
DataGridView.Rows
    .OfType<DataGridViewRow>()
     .Where(x => (int)x.Cells["Id"].Value == pId)
     .ToArray<DataGridViewRow>()[0]
     .Selected = true;

【讨论】:

【参考方案4】:

试试这个:

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

【讨论】:

datagridview.Rows[currentRow].Cells[0] 获取...在提供的索引位置的单元格。这是如何选择特定范围的行问题?【参考方案5】:

在 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) 在网格数据长于网格显示区域的情况下非常有用。上面提到的顺序不是必须的,你可以刷代码选择行/单元格[来源:个人测试]。 如何将网格移动到选定位置?选择了行,但网格位置不在所选行上。手动滚动显示选定的行。如何强制网格滚动? 看到:FirstDisplayedScrollingRowIndex 请注意您在.Cells(x) 中引用的任何列都是Columns(x).Visible = True,否则会出错。使用DataGridView.FirstDisplayed 找到第一个。【参考方案6】:
 <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
    
  
    清除所有先前的选择。 遍历需要在网格中选择的行。 从网格中获取他们的行句柄(注意这里的网格已经用新的行更新了) 检查行句柄是否有效。 如果行句柄有效,则选择它。

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

【讨论】:

【参考方案7】:

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

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

【讨论】:

以上是关于以编程方式在 DataGridView 中选择一行的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式定义 datagridview 中的列?

右键单击以选择 Datagridview 中的一行并显示一个菜单以将其删除

如何在表格视图中以编程方式选择一行? (斯威夫特 4.0)

以编程方式将新行添加到数据网格视图

以编程方式定义DataGridView列类型

如何将 DataGridView 组合框添加到绑定的 DataGridView 数据源(以编程方式)