C# 使用;行.所选=true";更改外观,但不更改当前行索引

C# 使用;行.所选=true";更改外观,但不更改当前行索引,c#,C#,我有以下代码片段,用于在网格中搜索所需的记录并突出显示它: foreach(DataGridViewRow row in grdActiveJobs.Rows) { if(row.Cells["Part Number"].Value.ToString() == lvPartNum && row.Cells["Serial Number"].Value.ToString() == lvSerialNum) row.Selected = true; } 上面

我有以下代码片段,用于在网格中搜索所需的记录并突出显示它:

foreach(DataGridViewRow row in grdActiveJobs.Rows)
{
    if(row.Cells["Part Number"].Value.ToString() == lvPartNum && row.Cells["Serial Number"].Value.ToString() == lvSerialNum)
        row.Selected = true;
}
上面的代码按预期工作-但是,如果我在currentrow.index上运行检查,该行将高亮显示

 if (grdActiveJobs.CurrentRow.Index == 0)
 {
     // Do things
 }
即使前面代码段找到的突出显示行的索引为5,它也会将当前索引显示为0

我的问题是,当设置“row.selected=true”时,如何确保网格的当前行索引设置正确且未检测为0


提前谢谢。

经过一番挖掘,我发现了以下解释:

GridName.CurrentRow.Index-返回系统定义的当前单元格的索引,该索引并不总是与用户选择的单元格相同。例如,如果您有一个允许您选择多行的网格,如果您选择了10行,然后取消选择其中一行,则currentrow.index将是您单击的最后一行的索引,即现在未选择的一行

要返回当前选定行的索引(对用户突出显示),需要使用GridName.SelectedRows[0]。index,如果只选择了一行,则将返回选定行的索引。(如果启用了multi-select,则增加上一个代码段中的[0]显然会返回第二个选定行的索引)

我的代码现在是:

if (grdActiveJobs.SelectedRows[0].Index == 0)
{
    // Do stuff correctly
}

如果您可以改进我的解释注释并让我知道:)

您有兴趣改为获取grdActiveJobs.SelectedIndex吗?@HOKBONG Fetching这将是理想的,但是我没有选择索引的选项。如果您以编程方式设置所选行,您可以使用grid.selectedRows,为什么不在该点检查行索引,然后//正确地执行操作?