Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 2014
-
27 nov. 2012 à 16:58
madkeyboard
Messages postés100Date d'inscriptionmercredi 27 avril 2011StatutMembreDernière intervention21 décembre 2012
-
20 déc. 2012 à 11:21
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;
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 18 déc. 2012 à 15:18
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.
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 28 nov. 2012 à 11:06
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!
madkeyboard
Messages postés100Date d'inscriptionmercredi 27 avril 2011StatutMembreDernière intervention21 décembre 20121 18 déc. 2012 à 11:00
Salut,
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);
madkeyboard
Messages postés100Date d'inscriptionmercredi 27 avril 2011StatutMembreDernière intervention21 décembre 20121 20 déc. 2012 à 11:21
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 !