Answering to my own question. This it's a clean solution that doesn't need too much work (All the code can handle in the KeyDown event):
Sub DropDownListBox_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
If Char.IsLetterOrDigit(Chr(e.KeyValue)) Then
e.SuppressKeyPress = True
If TryCast(sender.tag, Timer) Is Nothing Then
Dim vTimer As New Timer
vTimer.Interval = 1000
vTimer.Tag = ""
sender.Tag = vTimer
AddHandler vTimer.Tick,
Sub(Timer As Object, eventsArgs As System.EventArgs)
Timer.Tag = ""
If Not TryCast(sender, CheckedListBox).Visible Then
Timer.dispose() : Timer = Nothing
End If
End Sub
Else
sender.Tag.Stop() : sender.Tag.Start()
sender.Tag.Tag &= Chr(e.KeyValue)
Dim vIndex As Integer = TryCast(sender, CheckedListBox).FindString(sender.Tag.Tag)
If vIndex <> -1 Then TryCast(sender, CheckedListBox).SelectedItem = TryCast(sender, CheckedListBox).Items(vIndex)
End If
End If
End Sub
Basically I use the TAG object to keep a Timer running every 1 sec; then, if the user typing several chars, the process will find exactly the wanted text.
Any comment or feedback will be welcome.