Το πρώτο βήμα που πρέπει να κάνουμε είναι να κάνουμε add ένα User Control στην εφαρμογή μας .Ας το ονομάσουμε myCombo.vb
Κατόπιν μέσα στον κώδικα του user control αντικαθιστούμε το
Inherits System.Windows.Forms.UserControl μέ Inherits System.Windows.Forms.ComboBox
Θα χρησιμοποιήσουμε δύο μεθόδους της βασικής κλάσης του combobox την MyBase.KeyUp και την MyBase.Leave
Οπότε ο κώδικας έχει ως εξής
Public
Class myCombo
Inherits System.Windows.Forms.ComboBox
Private Sub myCombo_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
Dim Typed As String 'Το πληκτρολογηθέν κείμενο
Dim FoundIndex As Integer 'Θέση του κειμένου στό Items Collection
Dim FoundItem As Object 'Το αντικείμενο που βρέθηκε στο Items Collection
Dim FoundText As String 'Το κείμενο του αντικειμένου
Dim AppendText As String 'Το κείμενο που βρίσκεται μετά το σημείο του πληκτρολογηθέντος κειμένου
Select Case e.KeyCode
Case Keys.Back, Keys.Left, Keys.Right, Keys.Up, Keys.Down, Keys.Delete, Keys.CapsLock, Keys.Shift, Keys.Home, Keys.ShiftKey
Return
End Select
Typed =
Me.Text
If Trim(Typed) = "" Then
Return
End If
FoundIndex =
Me.FindString(Typed) 'Θέση του πληκτρολογηθέντος κειμένου μέσα στο Items Collection
If FoundIndex >= 0 Then
FoundItem =
Me.Items(FoundIndex) 'Αντικείμενο μέσα στο Items Collection
FoundText =
Me.GetItemText(FoundItem) 'Κείμενο του αντικειμένου
AppendText = FoundText.Substring(Typed.Length)
'Κείμενο μετά από το σημείο του μέχρι τώρα πληκτρολογηθέντος
Me.Text = Typed & AppendText 'Δημιουργία κειμένου
Me.SelectionStart = Typed.Length 'Θέση από όπου θα συνεχισθεί η πληκτρολόγηση
Me.SelectionLength = AppendText.Length 'Επιλογή όλων των χαρακτήρων μετά την θέση της τελευταίας πληκτρολόγησης
End If
End Sub
Private Sub myCombo_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Leave
Dim FoundIndex As Integer
FoundIndex =
Me.FindStringExact(Me.Text) 'Ακριβής εύρεση στην θέση του Items Collection
Me.SelectedIndex = -1
Me.SelectedIndex = FoundIndex 'Επιλογή θέσης στο Items Collection
End Sub
End
Class
Κατόπιν το προσαρμοσμένο combobox μπορούμε να το χρησιμοιποιήσουμε στις φόρμες της εφαρμογής μας έχοντας και αυτή την δυνατότητα.
Βέβαια υπάρχουν πολλά έτοιμα τέτοιου τύπου controls στην αγορά μέ απείρως περισσότερη λειτουργικότητα αλλά κοστίζουν.
Υ.Γ. Για VS2005 επειδή δέν το έχω δουλέψει δέν ξέρω αν την παραπάνω λειτουργικότητα την έχει από μονο του το Windows.Forms.ComboBox