Auto Complete ComboBox – VB.NET Windows Forms
Introduction
This is a simple code snippet which is used to make an Auto Complete ComboBox.
Using the code
Usage: Call the subroutine from within the ComboBox’s KeyPress event handler.
AutoComplete(ByRef cb As ComboBox, ByVal e As System.Windows.Forms.KeyPressEventArgs, Optional ByVal blnLimitToList As Boolean = False)
cb– ComboBox used to make the Auto Complete ComboBox.e–System.Windows.Forms.KeyPressEventArgsused to handle the keyboard inputs.blnLimitToList– Optional Boolean value indicating whether the user input is limited to the list values or not.
Code
' AutoComplete
Public Sub AutoComplete(ByRef cb As ComboBox, ByVal e As System.Windows.Forms.KeyPressEventArgs, Optional ByVal blnLimitToList As Boolean = False)
Dim strFindStr As String
If e.KeyChar = Chr(8) Then 'Backspace
If cb.SelectionStart <= 1 Then
cb.Text = ""
Exit Sub
End If
If cb.SelectionLength = 0 Then
strFindStr = cb.Text.Substring(0, cb.Text.Length - 1)
Else
strFindStr = cb.Text.Substring(0, cb.SelectionStart - 1)
End If
Else
If cb.SelectionLength = 0 Then
strFindStr = cb.Text & e.KeyChar
Else
strFindStr = cb.Text.Substring(0, cb.SelectionStart) & e.KeyChar
End If
End If
Dim intIdx As Integer = -1
' Search the string in the Combo Box List.
intIdx = cb.FindString(strFindStr)
If intIdx <> -1 Then ' String found in the List.
cb.SelectedText = ""
cb.SelectedIndex = intIdx
cb.SelectionStart = strFindStr.Length
cb.SelectionLength = cb.Text.Length
e.Handled = True
Else
If blnLimitToList = True Then
e.Handled = True
Else
e.Handled = False
End If
End If
End Sub
History
- Released on July 30th, 2005.
your journal very interesting, it is much useful for me..