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
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
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
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.