Ce code est simple, il s'agit d'une classe dérivée à partir de la classe représentant un ComboBox du .NET framework.
Il lui manquait une fonctionnalité importante ! L'autoCompletion ! (remplissage automatique du texte au fur à mesure que vous tapez du texte, le remplissage se fait par recherche incrémentale)
Voilà tout commentaire est bien sûr la bienvenue. Je voulais partager ce code qui est à mon avis précieux et un bon début pour commencer un composant combo personnalisé adapté à divers besoins....
Source / Exemple :
'partage par IRNBRU
'
'niveau : intermediaire
'
'en cas de probleme ou de bugs
'
'commentaires : legrandnico@yahoo.com
'
Imports System.Windows.Forms
'on va faire un combo qui remplit le texte automatiquement
'au fur à mesure qu'on tape du texte : recherche incrementale
Public Class CompletionComboBox
Inherits ComboBox
Private _AutoComplete As Boolean = True
'Variable permettant à la procedure OnTextChanged
'de savoir si on effecture une recherche ou pas
Protected Overrides Sub OnKeyDown(ByVal e As KeyEventArgs)
'evenement lance quand on presse sur une touche dans le combo
_AutoComplete = e.KeyCode <> Keys.Delete And e.KeyCode <> Keys.Back
'Si on a taper sur la touche pour supprimer ou pour revenir en arriere
'la recherche ne se fait pas
MyBase.OnKeyDown(e)
'puisqu'on a "remplace" (overrides) la methode OnKeyDown de la classe
' de base ComboBox sinon les delegues qui sont enregistres
'ne recevront plus la notification de l'événement (à savoir une touche
'a ete pressee
End Sub
Protected Overrides Sub OnTextChanged(ByVal e As EventArgs)
'Cette methode est lancee lorsque le texte dans le combo a ete change
If _AutoComplete Then
'on s'assure que l'utilisateur n'a pas tape la touche retour (fleche droite ou
'la touche de suppresion
Dim TextEntered As String = Me.Text
'on recupere le texte en cours dans le combo
Dim index As Integer = Me.FindString(TextEntered)
'La methode FindString fait partie de la classe ComboBox
If index >= 0 Then
'Si le texte tape existe dans l'un des elements du combo
_AutoComplete = False
Me.SelectedIndex = index
'On deplace la selection du combo en fonction du texte trouve
_AutoComplete = True
Me.Select(TextEntered.Length, Me.Text.Length)
'on ne seletionne que le texte qui a ete ajoute
End If
End If
MyBase.OnTextChanged(e)
'meme explication seulement l'evenement est : changement de texte
End Sub
End Class
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.