Επέκταση δυνατοτήτων ενός ComboBox αυτόματο γέμισμα κατα την πληκρολόγηση από το Items Collection

Το πρώτο βήμα που πρέπει να κάνουμε είναι να κάνουμε 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

Share


Έχουν δημοσιευτεί Κυριακή, 2 Απριλίου 2006 10:43 πμ από το μέλος imanos
Καταχώρηση στις κατηγορίες:

Σχόλια:

Χωρίς Σχόλια