Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式选择DataGridView中的行_C#_.net_Winforms_Datagridview - Fatal编程技术网

C# 以编程方式选择DataGridView中的行

C# 以编程方式选择DataGridView中的行,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,如何在运行时以编程方式在DataGridView中选择特定范围的行?如果有数据源,可以使用select方法: 如果数据源中有未测试的对象,也可以使用linq,但我认为您可以执行以下操作: dataGrid.Rows[index].Selected = true; 或者您可以执行以下操作(但同样:未测试): DataGridView.Rows 第()类 .Where(x=>(int)x.Cells[“Id”].Value==pId) .ToArray()[0] .Selected=true;

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

如果有数据源,可以使用select方法:


如果数据源中有未测试的对象,也可以使用linq,但我认为您可以执行以下操作:

dataGrid.Rows[index].Selected = true;
或者您可以执行以下操作(但同样:未测试):

DataGridView.Rows
第()类
.Where(x=>(int)x.Cells[“Id”].Value==pId)
.ToArray()[0]
.Selected=true;

在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
.ClearSelection()----------------------------------------------------1.
foreach(项目列表中的var项目)---------------------------------------2
{
rowHandle=.LocateByValue(“UniqueProperty_Name”,item.unique_id);--3
if(rowHandle!=GridControl.InvalidRowHandle)--------------------------------------4
{
.选择行(行句柄);------------------------------------5
}
}
  • 清除所有以前的选择
  • 循环浏览网格中需要选择的行
  • 从网格中获取它们的行句柄(注意这里网格已经用新行更新)
  • 检查行句柄是否有效
  • 如果行句柄有效,则选择它
  • 其中itemList是要在网格视图中选择的行列表。

    尝试以下操作:

    datagridview.Rows[currentRow].Cells[0];
    
    试试这个:

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

    希望这有帮助

    请注意,如果DataGridView是只读的,则
    SelectedRows.Clear()
    将不起作用。请使用DataGridView的ClearSelection()方法代替SelectedRows.Clear()instance@Furkan:那可不是一回事。使用
    SelectedRows.Clear()
    仅清除选定的行,但使用
    ClearSelection()
    也会丢失列=>列选择…添加一行代码
    dataGrid.CurrentCell=dataGrid.rows[row.Index].Cells[0]@Timeless:SelectionChanged事件在测试您的建议时似乎不会触发。网格。行(0)。单元格(0)在网格数据长于网格显示区域的情况下非常有用。上面提到的顺序不是必需的,您可以滑动代码进行行/单元格选择[来源:个人测试]。如何将网格移动到选定位置?行已选定,但栅格位置不在选定行上。手动滚动显示所选行。如何强制网格滚动?请参见:FirstDisplayedScrollingRowIndex获取。。。位于提供的索引位置的单元格。这是如何按照问题中的要求选择特定范围的行的?
    
     <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
        }
      }
    
    datagridview.Rows[currentRow].Cells[0];
    
    DataGridViewRow row = dataGridView1.Rows[index row you want];
    dataGridView1.CurrentRow = row;