Salut à tous,
J'ai créé une combobox de type dropdown, pour rechercher dans une base existante. Il faut commencer par taper au moins 3 lettres, puis, via un algorithme, les possibilités s'affichent, et l'on peut sélectionner la bonne, ou alors taper à la main.
La validation n'Est possible que si le terme exact existe.
J'ai donc créé un évènement sur Text_Changed.
Le problème, c'Est que si je sélectionne un élément existant, il le valide (Le bouton OK est "Enabled", mais efface le contenu dans la dropdown. J'ai bien regardé, c'Est mon seul et unique évènement sur la combobox.
J'ai testé la valeur de text du combobox, et jusqu'à la fin elle n'Est pas vide.
Ci joint la fonction de l'évènement :
private void comboBoxSerieName_SelectedValueChanged(object sender, EventArgs e)
{
this.comboBoxSerieName.TextChanged -= new System.EventHandler(this.comboBoxSerieName_SelectedValueChanged);
serieUrlName = "";
string comboboxValue = comboBoxSerieName.Text;
comboBoxSerieName.Items.Clear();
createButton.Enabled = false;
if (comboBoxSerieName.Text.Length >= 3)
{
this.Enabled = false;
Salut madkeyboard
Merci pour ta réponse. En fait, j'ai effectivement trouvé entre temps, et complètement oublié mon post, dsl!
La solution est toute simple : La listviewitem possède déjà cette propriété!
En effet, on peut définir la source dans les propriétés de l'objet. donc dès qu'une lettre est tapée, il me suffit de redéfinir cette propriété.
Malheureusement, je n'ai pas mon code sur moi pour retrouver le nom exact de cette propriété, je me rappelle juste qu'il y a le mot "source" dedans (Assez facile à retrouver, donc!)
Merci en tout cas pour ton aide.
P.S.: Ta solution ne marcherait pas : Même la méthode Enabled n'empêche l'accès que pour l'utilisateur. Le code lui même peut modifier le contenu, et appeler quand même la méthode. Donc y aurait pas vraiment le choix, il faudrait avant tout désactiver l'appel.
Bonjour Louis,
1- Je ne comprend pas ta phrase : Les items sont toujours bien ajoutés dans la liste. Le problème c'est que si j'en sélectionne un, il apparait dans la fenêtre principale, puis disparait (Et donc la liste disparait, mais ca c'Est normal).
2- J'ai fait ca... Aucun problème, le programme se comporte comme attendu. Jusqu'au dernier moment, la valeur est affichée dans le texte, puis la dernière ligne , avec l'ajout du Handler, est appelée une seconde fois (ca par contre, je sais pas pourquoi!), et là, la valeur disparait!
Je ne sais pas si tu as trouvé une solution depuis le temps, mais je te propose juste un truc !
Personnellement, j'éviterais de virer la réaction à un évènement pour la remettre à la fin.
Tu aurais meilleurs temps à bloquer le control pendant que ta méthode s'exécute.
Du coup, à la place de :
this.comboBoxSerieName.TextChanged -= new System.EventHandler(this.comboBoxSerieName_SelectedValueChanged);
//...
this.comboBoxSerieName.TextChanged += new System.EventHandler(this.comboBoxSerieName_SelectedValueChanged);
Je pensais que tu voulais juste empêcher l'utilisateur d'y toucher !
Vu que c'est toi qui fait le code, à priori t'avais de raison d'appeler un évènement ^^
Enfin le principal c'est que t'ai ta solution !