Arrêter la zone de liste déroulante de l'événement selectedIndexChanged de tir lors du chargement du formulaire
J'ai un formulaire avec un ComboBox
qui fournit un dropdownlist. Sur la zone de liste déroulante du SelectedIndexChanged event
, suis en cours d'exécution du code, mais je ne veux pas que le code à exécuter lors du chargement du formulaire. Malheureusement, lorsque je charge le formulaire (avant de me faire une sélection dans la liste déroulante), SelectedIndexChanged
de la zone de liste déroulante des incendies (je pense que lorsque la zone de liste déroulante est databinding
). Est-il un moyen d'éviter ce genre de comportement?
- Pas sûr à ce sujet sur le bureau, mais dans .NET Compact, cet événement semble d'incendie avant l'événement Form_Load, ce qui est vraiment problématique, rien sur le formulaire est même encore lorsque ce code est touché. Sur la MUCOVISCIDOSE, la solution est malheureusement une forme variable qui est définie à la fin de la Charge, puis le gestionnaire d'événement vérifie cette variable avant qu'il tire.
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez réagir uniquement lorsque l'utilisateur de modifier l'élément sélectionné dans la liste déroulante, puis il est préférable de s'abonner à SelectionChangeCommitted.
Vous pouvez simplement détacher l'
SelectedIndexChanged
événement, appelez votrefill
de la fonction et de lier leSelectedIndexChanged
événement. Malheureusement, cela ne fonctionne pas avec une grille.Par exemple:
Assurez-vous de définir le
DataSource
propriété dans votreonload()
fonction après l'affectation de l'ValueMember
etDatamember
propriétés.Cela vous aidera à résoudre votre problème!
Pourquoi ne pas avoir un
boolean
drapeau qui indique si votreForm
a fini de charger?Dans votre
SelectionChanged
cas, vérifiez si leboolean
drapeau esttrue
. Si c'esttrue
ensuite gérer l'événement, sinon l'ignorer.ToolStripComboBox
variation de ne pas avoir unSelectionChangeCommitted
événement. Ainsi, cette méthode aura à faire. Ou, pour éviter des conditions de course, l'utilisationlock
etMonitor.TryEnter
.VB
Il a travaillé pour moi dans un chemin avec le code suivant: