Here is my code for the combobox.
Option Strict Off
Option Explicit On
Imports Microsoft.VisualBasic
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Public Class MultiKeyCombo
Inherits ComboBox
'Auto complete Combo variables
Private intSaveIndex As Integer
Private blnMultiKeySelect As Boolean = False
Public Property MultiKeySelect() As Boolean
Get
Return blnMultiKeySelect
End Get
Set(ByVal Value As Boolean)
blnMultiKeySelect = Value
End Set
End Property
Private Sub MultiKeyCombo_KeyUp(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
If MultiKeySelect Then
'AutoComplete(CType(sender, ComboBox), e)
Dim cbo As ComboBox = DirectCast(Me, ComboBox)
Select Case e.KeyCode
Case Keys.Back, Keys.Left, Keys.Right, Keys.Up, Keys.Delete,
Keys.Down, Keys.Tab, Keys.Shift, Keys.LShiftKey, Keys.RShiftKey, Keys.ShiftKey
Return
End Select
Dim ComboBoxText As String = cbo.Text
Dim FirstFound As Integer = cbo.FindString(ComboBoxText)
If FirstFound >= 0 Then
Dim FirstFoundItem As Object = cbo.Items(FirstFound)
Dim FirstFoundText As String = cbo.GetItemText(FirstFoundItem)
cbo.Text = FirstFoundText
cbo.SelectionStart = ComboBoxText.Length
cbo.SelectionLength = cbo.Text.Length
'Save the last index
intSaveIndex = FirstFound
Else
'If no match is found go back to the last index and select the
'whole text
If blnMultiKeySelect = True Then
'cbo.Text = cbo.Text.Substring(0, cbo.Text.Length - 1)
If intSaveIndex > 0 Then
cbo.SelectedIndex = intSaveIndex
End If
cbo.SelectionStart = 0
cbo.SelectionLength = cbo.Text.Length()
End If
End If
End If
End Sub
Private Sub MultiKeyCombo_Leave(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Leave
If MultiKeySelect Then
If MyBase.Text <> "" Then
'Check to make sure an invalid entry is not left in the
combobox
Dim cbo As ComboBox = DirectCast(sender, ComboBox)
Dim ComboBoxText As String = cbo.Text
Dim FirstFound As Integer = cbo.FindStringExact(ComboBoxText)
If FirstFound < 0 Then
cbo.SelectedIndex = intSaveIndex
Else
cbo.SelectedIndex = FirstFound
End If
End If
End If
End Sub
End Class
"Cor Ligthert" wrote:
Brian,
May I say it in otherwords, your selectedindex has another value than the
selectedvalue has?
This is than really strange,
While the combobox.textbox gives another string than is that textbox shows?
I knof this kind of behaviour from the selectionchangecommited, however you
did again not tell what events you are using for the combobox.
Cor