2008-11-05 4 views
4

Comment empêcher l'exécution de code dans l'événement SelectedValueChange d'une zone de liste déroulante lorsque la zone de liste déroulante est chargée pour la première fois? J'ai besoin du code pour exécuter quand l'utilisateur a choisi une nouvelle valeur.événement Winforms ComboBox SelectedValueChange

Répondre

3

Vous avez quelques options.

  1. Plutôt que de laisser le concepteur du raccordement des gestionnaire d'événements, vous pouvez le faire vous-même après le chargement

  2. Vous pouvez définir un indicateur dans votre demande de « chargement » et mettre le code à l'intérieur de votre événement SelectedValueChange pour vérifier! chargement avant de continuer.

Personnellement, je voudrais simplement ajouter le gestionnaire après la charge si cela cause des problèmes.

+0

Je viens de retirer le gestionnaire, puis l'ai accroché après le chargement – scantwell71

10

Si vous souhaitez uniquement exécuter du code lorsque l'utilisateur modifie la liste déroulante, vous pouvez vous abonner à SelectionChangeCommitted au lieu de SelectionChanged. "SelectionChangeCommitted" n'est pas appelé lorsque la sélection de liste déroulante est modifiée par programme.

+0

Je sais que ce un ancien poste, mais cette astuce m'a beaucoup aidé !! Je vous remercie! – RoelF

+0

+1 cela devrait être la réponse acceptée – dotjoe

+0

Attention, SelectionChangeCommitted ne se déclenche pas lorsque l'utilisateur supprime la liste déroulante, sélectionne quelque chose avec le clavier puis quitte le contrôle. Il ne se déclenche que s'il frappe. –

0

Je préfère l'événement SelectedIndexChanged car son comportement semble mieux modéliser celui de l'API Win32 sous-jacente en le rendant prévisible.

Certains des événements les plus ésotériques offerts par les contrôles ne modélisent simplement pas le comportement que l'on pourrait attendre de leur nom.

Questions connexes