Soyez le premier à donner votre avis sur cette source.
Vue 13 504 fois - Téléchargée 977 fois
'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
je ne suis pas specialiste des combobox et je ne sais comment inserer le programme de nico sur l'autocompletion dans un combobox.
J'aurais besoin d'une aide..merci
facteur
Je crois que dans VS 2005, l'autocompletion est déja implémentée, donc tu n'a surement pas besoin de te casser la tête avec tout ca.
Ci ce n'est pas le cas, pour utiliser la class, copie les texte ci dessus (code) dans une feuille vierge, ensuite dans ta form, tu va chercher un combobox que tu place ou tu veut.
Dans ton fichier .vb, la déclaration de ce combo sera automatiquement généré, et donc il te reste plus qu'a changer la déclaration du genre 'Dim Ma_Combo as ComboBox' en 'Dim Ma_Combo as CompletionComboBox'.
Le contructeur va appeler la class CompletionComboBox qui hérite de Combobox donc elle récupère toute ses propriétés, ses évenement, ses variables publiques, etc... Vive l'héritage et le language objet...
Tu peut bien sur appeler les nouvelles fonctions qui on été décrite dans la nouvelle classe.
Au niveau bug, fait bien attention quand tu remplis ton combo avec un datasource (ou meme une source de donnée lambda), car ce code ne fonctionne pas.
Bonne prog, jeff
Comment on utilise cette Class avec un ComboBox .NET 2005 ?
Je doit glisser un combo dans ma form et instancier ta class ?
en appelant les Méthodes OnKeyDown et OnTextChanged ?
Merci,
Eric.
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.