Here's a code which should filter and show ComboBox items according to our input,
Unfortunately, this code have some bugs inside which blocks VS under some circumstances. This simply doesn't work well enough as we'd expect from filtered combo box.Code:Public Sub CboxAutoComplete(ByVal cbo As ComboBox, ByVal e As System.Windows.Forms.KeyEventArgs) Dim iIndex As Integer Dim sActual As String Dim sFound As String Dim bMatchFound As Boolean If e.KeyCode = Keys.Back Then 'cbo.Text = Mid(cbo.Text, 1, Len(cbo.Text) - 1) cbo.Text = "" End If If ((e.KeyCode = Keys.Left) Or _ (e.KeyCode = Keys.Right) Or _ (e.KeyCode = Keys.Up) Or _ (e.KeyCode = Keys.Down) Or _ (e.KeyCode = Keys.PageUp) Or _ (e.KeyCode = Keys.PageDown) Or _ (e.KeyCode = Keys.Home) Or _ (e.KeyCode = Keys.End)) Then Return End If Do sActual = cbo.Text iIndex = cbo.FindString(sActual) 'if index > -1 then a match was found. If (iIndex > -1) Then sFound = cbo.Items(iIndex).ToString() cbo.SelectedIndex = iIndex cbo.SelectionStart = sActual.Length cbo.SelectionLength = sFound.Length bMatchFound = True Else If sActual.Length = 1 Or sActual.Length = 0 Then cbo.SelectedIndex = 0 cbo.SelectionStart = 0 cbo.SelectionLength = Len(cbo.Text) bMatchFound = True Else cbo.SelectionStart = sActual.Length - 1 cbo.SelectionLength = sActual.Length - 1 cbo.Text = Mid(cbo.Text, 1, Len(cbo.Text) - 1) End If End If Loop Until bMatchFound End Sub
Of course, this code have to be called from an event like this:
I've tried with debugging but without success. Any idea?Code:Private Sub cbox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles cboINtervencija3.KeyDown Call CboxAutoComplete(cbox1, e)




Reply With Quote