如果单元格中的值与文本框匹配,如何返回 DataGridView 的单元格引用?

问题描述 投票:0回答:1

我想获取对单元格的引用 - 即行号和列号,或者特定单元格的单元格地址(如果该 DataGridView 单元格包含文本框的值)。

我已经探索了许多 URL 来获得我想要的东西。我什至可能错过了访问 URLS,因为可能会以不同的方式询问。

Dim colNdx As Integer
Dim rowNdx As Integer

Dim IsFound As Boolean = False
For Each rw As DataGridViewRow In DataGridView1.Rows
    For i As Integer = 0 To DataGridView1.Columns.Count - 1
        If rw.Cells(i).Value.ToString = TextBox1.Text Then
            IsFound = True
            Exit For
        End If
    Next
Next
If (IsFound) Then
    MessageBox.Show("Data Exists! in Cell of DataGridWiew1" & )
    DataGridView1.Rows(rowNdx).Cells(colNdx).Value
Else
    MessageBox.Show("Data Not Exists!")
End If

那么我怎样才能获得

rw.Cells(i).Value.ToString()
的单元格引用,例如显示DataGridView中存在且与Textbox匹配的该单元格的行号和列号?

我尝试了上面的代码,但无法正确设置它来获取单元格引用。

vb.net datagridview textbox row cell
1个回答
0
投票

在您的代码中,您从未设置 rowNdx 或 colNdx。所以

DataGridView1.Rows(rowNdx).Cells(colNdx).Value
在 MessageBox 中不起作用,即使那段代码没有语法问题。

编写一个函数来检索单元格,如果未找到则返回 null。

Private Function FindString(dgv As DataGridView, searchString As String) As DataGridViewCell
    For Each row In dgv.Rows.OfType(Of DataGridViewRow)
        For Each cell In row.Cells.OfType(Of DataGridViewCell)
            If cell.Value.ToString() = searchString Then
                Return cell
            End If
        Next
    Next
    Return Nothing
End Function

并这样称呼它

Dim cell = FindString(DataGridView1, TextBox1.Text)
If cell IsNot Nothing Then
    MessageBox.Show($"Data exists in cell ({cell.RowIndex}, {cell.ColumnIndex})")
Else
    MessageBox.Show("Data does not exist!")
End If
© www.soinside.com 2019 - 2024. All rights reserved.