See if this helps.
1 ComboBox (with items as stated in your post)
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With ComboBox1
'//-- set for AutoComplete.
.AutoCompleteSource = AutoCompleteSource.CustomSource
.AutoCompleteMode = AutoCompleteMode.SuggestAppend '--\\
AddHandler .Validating, AddressOf cmb_Validating '// add ComboBox to Validating Event.
End With
'// use this to load/reload the AutoCompleteList with the ComboBox items.
loadMyCoolAutoCompleteList(ComboBox1)
End Sub
Private Sub loadMyCoolAutoCompleteList(ByVal selectedComboBox As ComboBox)
With selectedComboBox
.AutoCompleteCustomSource.Clear() '// Clear AutoCompleteList.
For Each itm As String In selectedComboBox.Items '// loop thru all items in the ComboBox.
.AutoCompleteCustomSource.Add(itm) '// add original item to your AutoCompleteList.
'// locate the .Substring you want to add to the AutoCompleteList.
itm = itm.Substring(itm.IndexOf(":") + 2) '// get all text following the ":" and the " " right after it.
.AutoCompleteCustomSource.Add(itm) '// add .Substring of item to your AutoCompleteList.
Next
End With
End Sub
'// once the ComboBox Validates (looses focus), it will set the original item as .Text.
Private Sub cmb_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
Dim selectedComboBox As ComboBox = CType(sender, ComboBox)
For Each itm As String In selectedComboBox.Items '// loop thru all items in the ComboBox.
If itm.Substring(itm.IndexOf(":") + 2) = selectedComboBox.Text Then '// locate the .Substring that matches the .Text.
selectedComboBox.Text = itm '// set .Text of ComboBox item.
Exit For '// exit loop since done locating item.
End If
Next
End Sub
End Class