This code works for me..
I have an own implementation of DataGridView and my data is bound to a BindingSource _BS..
Maybe you can give it a shot.
Public Function FindValue(ByVal tcValue As String, Optional ByVal tcColumn As String = "") As Boolean
If Not String.IsNullOrEmpty(tcValue.Trim) Then
Dim lcColumn As String = Me.CurrentCell.OwningColumn.DataPropertyName
If Not String.IsNullOrEmpty(tcColumn) Then
lcColumn = tcColumn
End If
If String.IsNullOrEmpty(lcColumn) Then
lcColumn = Me.CurrentCell.OwningColumn.Name
End If
For Each loRow As DataGridViewRow In Me.Rows
If loRow.Cells(lcColumn).EditedFormattedValue.ToString.ToUpper().StartsWith(tcValue.ToUpper()) Then
Me._BS.Position = loRow.Index
Return True
End If
Next
End If
Return False
End Function