Here is a snippit
Protected Overridable Sub OnComboKeyUp(ByVal sender As Object, ByVal e As KeyEventArgs)
Dim s As String, fs As String, s2 As String
Dim index As Integer, k As Integer
Dim objValue As Object
Dim displayM As String
Dim check() As Keys = {Keys.CapsLock, Keys.Control, _
Keys.ControlKey, Keys.Down, _
Keys.End, Keys.Enter, Keys.Escape, Keys.End, _
Keys.Home, Keys.Insert, Keys.Left, Keys.PageDown, _
Keys.PageUp, Keys.Right, Keys.Shift, Keys.ShiftKey, _
Keys.Tab, Keys.Up, Keys.Alt}
If Array.IndexOf(check, e.KeyCode) <> -1 Then
Return
End If
s = Me.ColumnComboBox.Text
If s <> "" Then
index = Me.ColumnComboBox.FindString(s)
If index = -1 Then
If ColumnProp.BlockNil Then
Beep()
For k = s.Length To 1 Step -1
s2 = s.Substring(0, k)
index = Me.ColumnComboBox.FindString(s2)
If index <> -1 Then
Exit For
End If
Next
s = s2
End If
End If
If index <> -1 Then
Try
Me.ColumnComboBox.SelectedIndex = index
Dim o As Object
Dim drv As DataRowView
o = Me.ColumnComboBox.SelectedItem
If o.GetType Is GetType(DataRowView) Then
drv = CType(o, DataRowView)
displayM = Me.ColumnComboBox.DisplayMember.ToString
objValue = drv.Item(displayM)
fs = CStr(objValue)
Else
fs = CStr(Me.ColumnComboBox.SelectedItem)
End If
Me.ColumnComboBox.SelectionStart = s.Length
Me.ColumnComboBox.SelectionLength = (fs.Length - s.Length)
Catch
End Try
Else
End If
Else
Me.ColumnComboBox.SelectedIndex = 0
Me.ColumnComboBox.SelectionStart = 0
Me.ColumnComboBox.SelectionLength = Me.ColumnComboBox.Text.Length
Beep()
End If
End Sub