以编程方式在 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 中选择一行的主要内容,如果未能解决你的问题,请参考以下文章