Te pego la respuesta que le dí días atrás a otro compañero y que al final preguntaba otra cosa...
Para buscar en un datagridview primero debes decidir si la búsqueda se referirá a una columna en concreto o se aplica a cierto número de columnas o a todas. Lo lógico es que como cada columna se asocia a un tipo de datos concreto, la búsqueda sea aplicada sólo a la columna correspondiente, entonces para eso la interfaz debería ser clara al respecto y haciendo uso la selección correcta de la columna (por ejemplo desde un combobox se fuerza a elegir que se quiere buscar, por ejemplo: nombre, apellido,teléfono, dirección, cargo,etc...) esto puede aprovecharse así mismo para filtrar que el textbox sólo vaya a contener el tipo de datos acorde al tipo de datos que contiene la columna, no obstante por sencilez supondremos que todo son strings... y que la columna en la que buscar es la segunda (apellido)
Code Snippet
Private
Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim total As Integer = 0
'Dim col As Integer = ComboBox1.SelectedIndex
Dgv1.ClearSelection()
For k As Integer = 0 To Dgv1.RowCount - 1
If Dgv1.Item(1, k).Value = TextBox1.Text Then
Dgv1.Item(1, k).Selected =
True
total += 1
End If
Next
' de cara a un usuario un datagridview es una tabla...
MsgBox(
"Se encontraron " & total & " coincidencias, se seleccionaron sobre la tabla, revísela...")
End Sub
Hemos supuesto que la columna primera (la cero) contiene el campo nombre y que la columna segunda (la 1) es sobre la que vamos a buscar (campo apellido) , evidentemente, si como te señalo la columna es elegible desde un combobox, deberías cambiar item(1, ...) por item(col, ...)
Si la cantidad de filas fuera 'enorme' quizás te interesara activar el orden en el datagridview para hacer búsquedas binarias... pero vamos para unos pocos de miles recorrer elemento e elemento es todavía rápido...
En el código de ejemplo la búsqueda ha consistido en seleccionar las celdas que cumplen el requisito y contar el total de búsquedas halladas, pero igualmente podrías seleccionar la fila completa o copiar el contenido de las filas...etc...
nota.: Dgv1 es el nombre que le he dado al DataGridview... para abreviar..