Auto Complete Combo Box in Visual Basic.NET


This time i'll introduce a simple Visual Basic script on how to create an auto complete combo box using visual It can be used for getting the Selected Record from my Data Bound Combo with Return Type is DataRowView. Some generic function for handling the event are implemented..

Get the code...

Private Sub cboName_Leave(ByVal sender As Object, ByVal e As System.EventArgs)
Handles cboName.Leave
Dim recRowView As DataRowView
Dim recName As DB.tblNameRow


'OPTIONAL: Now you can do some extra handling if you want

recRowView = cboName.SelectedItem
If recRowView Is Nothing Then Exit Sub

'Display the Name Info (Row Type comes from my bound Dataset)
recName = recRowView.Row
lblAccountNum.Text = recName.AccountNum
lblCompanyName.Text = recName.CompanyName

End Sub

Private Sub cboName_KeyUp(ByVal sender As Object,
ByVal e As System.Windows.Forms.KeyEventArgs) Handles cboName.KeyUp

AutoCompleteCombo_KeyUp(cboName, e)

End Sub

'Functions for handling the events:
Public Sub AutoCompleteCombo_KeyUp(ByVal cbo As ComboBox, ByVal e As KeyEventArgs)
Dim sTypedText As String
Dim iFoundIndex As Integer
Dim oFoundItem As Object
Dim sFoundText As String
Dim sAppendText As String

'Allow select keys without Autocompleting
Select Case e.KeyCode
Case Keys.Back, Keys.Left, Keys.Right, Keys.Up, Keys.Delete, Keys.Down
End Select

'Get the Typed Text and Find it in the list
sTypedText = cbo.Text
iFoundIndex = cbo.FindString(sTypedText)

'If we found the Typed Text in the list then Autocomplete
If iFoundIndex >= 0 Then

'Get the Item from the list (Return Type depends if Datasource was bound
' or List Created)
oFoundItem = cbo.Items(iFoundIndex)

'Use the ListControl.GetItemText to resolve the Name in case the Combo
' was Data bound
sFoundText = cbo.GetItemText(oFoundItem)

'Append then found text to the typed text to preserve case
sAppendText = sFoundText.Substring(sTypedText.Length)
cbo.Text = sTypedText & sAppendText

'Select the Appended Text
cbo.SelectionStart = sTypedText.Length
cbo.SelectionLength = sAppendText.Length

End If

End Sub

Public Sub AutoCompleteCombo_Leave(ByVal cbo As ComboBox)
Dim iFoundIndex As Integer

iFoundIndex = cbo.FindStringExact(cbo.Text)

cbo.SelectedIndex = iFoundIndex

End Sub

Related Posts by Categories

Widget by Hoctro

Enter your email address:

Delivered by FeedBurner


Source Code