Finding text from the datagrid view in vb.net

后端 未结 3 1174
醉酒成梦
醉酒成梦 2021-01-21 09:58

I have a data grid view in one windows form named \"GridViewForm\". When the user search for the text from the search box from another window form named \"FindForm\", I want to

相关标签:
3条回答
  • 2021-01-21 10:25

    You could use String.contains instead of an =.

    Here is the MSDN article on the contains method:

    http://msdn.microsoft.com/en-us/library/dy85x1sa.aspx

    code to style the cell if it contains the search text:

        Dim someText As String = SearchTextBox.Text
        Dim gridRow As Integer = 0
        Dim gridColumn As Integer = 0
        For Each Row As DataGridViewRow In AccountsDataGridView.Rows
            For Each column As DataGridViewColumn In AccountsDataGridView.Columns
                Dim cell As DataGridViewCell = (AccountsDataGridView.Rows(gridRow).Cells(gridColumn))
                If cell.Value.ToString.ToLower.Contains(someText.ToLower) Then
                    cell.Style.BackColor = Color.Yellow
                End If
                gridColumn += 1
            Next column
            gridColumn = 0
            gridRow += 1
        Next Row
    
    0 讨论(0)
  • 2021-01-21 10:27
    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
    
     For Each dr As DataGridViewRow In Me.DataGridView1.Rows
    
                If dr.Cells(0).Value.ToString.Contains(TextBox2.Text) Then dr.Visible = True Else dr.Visible = False
    
    
            Next
        End Sub
    
    0 讨论(0)
  • 2021-01-21 10:29

    Well you could set the cell's background color with a different color to highlight all the matches, and select only the cell corresponding to the current match:

    Dim searchIndex = 0
    AccountsDataGridView.ClearSelection()
    For Each row As DataGridViewRow In AccountsDataGridView.Rows
        For each cell As DataGridViewCell in row.Cells
            If CStr(cell.Value).Contains(SearchTextBox.Text, StringComparison.OrdinalIgnoreCase) Then
                If searchIndex = m_CurrentSearchIndex Then
                    'This is the cell we want to select
                    cell.Selected = True
                End If
                'Yellow background for all matches
                cell.Style.BackColor = Color.Yellow
                searchIndex += 1
            End If
        Next
    Next
    

    If m_CurrentSearchIndex has a value of 0, it would select the first match, second match for a value of 1, etc.

    0 讨论(0)
提交回复
热议问题