Vb.net DatagridView:如何以编程方式将当前索引移动到以编程方式选择的行?

Vb.net DatagridView:如何以编程方式将当前索引移动到以编程方式选择的行?,vb.net,Vb.net,在文本字段中,用户可以键入一个名称,然后按下按钮,程序在DataGridView上搜索该名称并突出显示记录行 搜索和高亮显示循环 For Each row In DataGrid.Rows If row.Cells("userName").Value = userNameToSearch Then row.Selected = True Exit For End If Next 这些环很好用 然后我需要移动Data

在文本字段中,用户可以键入一个名称,然后按下按钮,程序在DataGridView上搜索该名称并突出显示记录行

搜索和高亮显示循环

For Each row In DataGrid.Rows
    If row.Cells("userName").Value = userNameToSearch Then                
        row.Selected = True
        Exit For
    End If
Next
这些环很好用

然后我需要移动DataGridView的索引以匹配该行

如果我使用

Dim MyFindedIndex As Integer
MyFindedIndex = DataGrid.CurrentRow.Index
通过示例,即使我知道匹配并突出显示的行是第7行,我也会得到一个0

如果我理解得很好,我还需要移动当前单元格的索引,因为当前单元格是决定索引值的单元格吗

我可以强制移动到索引号7

DataGrid.CurrentCell = DataGrid.Item(0, 7)
但我需要以编程的方式(找到“7”号)

可能使用IndexOf或类似的东西?


解决方案

用法比奥回答

单元格的列需要是可见的,而在我的DataGridView上则不是这样,因为该单元格包含用户不需要看到的主键号

解决方案:一个单元格用于搜索,一个单元格用于位置(此单元格可见)


如果单元格的列不可见,请为DataGridView抛出系统空引用,您可以使用:

  Datagridview.CurrentCell.RowIndex

对于DataGridView,您可以使用:

  Datagridview.CurrentCell.RowIndex

设置
DataGridView.CurrentCell
就足够了。在搜索循环中执行此操作

For Each row In DataGrid.Rows
    Dim cell As DataGridViewCell = row.Cells("userName")
    If cell.Value.ToString().Equals(userNameToSearch) = True Then                
        DataGrid.CurrentCell = cell
        Exit For
    End If
Next

设置
DataGridView.CurrentCell
就足够了。在搜索循环中执行此操作

For Each row In DataGrid.Rows
    Dim cell As DataGridViewCell = row.Cells("userName")
    If cell.Value.ToString().Equals(userNameToSearch) = True Then                
        DataGrid.CurrentCell = cell
        Exit For
    End If
Next


是DataGrid还是DataGridView?DataGridView对不起。您可以在循环中获取行索引
row.index
row.Cells(“用户名”).RowIndex
。您甚至可以通过相同的方式获取列索引,即行.Cells(“用户名”).ColumnIndex。它是DataGrid还是DataGridView?DataGridView对不起。您可以在循环中获取行索引
行.index
行.Cells(“用户名”).RowIndex
。您甚至可以用同样的方法获取列索引,方法是
row.Cells(“用户名”).ColumnIndex
?如果我使用DataGrid.CurrentCell=DataGrid.Item(0,Datagridview.CurrentCell.RowIndex),我会得到“对非共享成员的引用首先需要对象引用。索引有值对不起,我不明白。索引是我需要知道的。示例中的是7,但我需要将该值加载到一个变量,以便在DataGrid.CurrentCell=DataGrid.Item(0,7)行上使用。我找到了解决方案,发布在答案下面。感谢演出?如果我使用DataGrid.CurrentCell=DataGrid.Item(0,Datagridview.CurrentCell.RowIndex),我会得到“对非共享成员的引用首先需要对象引用。索引有值对不起,我不明白。索引是我需要知道的。示例中的是7,但我需要将该值加载到一个变量,以便在DataGrid.CurrentCell=DataGrid.Item(0,7)行上使用。我找到了解决方案,发布在答案下面。感谢您的代码运行良好,并突出显示该行,但在这之后,如果我询问DataGrid.CurrentRow.Index,我会得到一个Nothing值,而不是我要查找的7。这很奇怪,因为在调用另一个网格来搜索/选择索引工作正常的行之前,即使我单击任何行,索引也会更改,并且我使用该索引来显示我找到解决方案的信息,“cell”列隐藏在我的case(prlmary键)上,所以我需要使用技巧。答案贴在下面。谢谢。是的-您只能对
CurrentCell
使用可见单元格。您的代码工作正常,并高亮显示行,但在这之后,如果我询问DataGrid.CurrentRow.Index,我会得到一个Nothing值,而不是我要找的7。这很奇怪,因为在调用另一个网格来搜索/选择索引工作正常的行之前,即使我单击任何行,索引也会更改,并且我使用该索引来显示我找到解决方案的信息,“cell”列隐藏在我的case(prlmary键)上,所以我需要使用技巧。答案贴在下面。谢谢。是-您只能将可见单元格用于
CurrentCell