2 votes

vb.net / winform - ComboBox SelectedIndexChanged ?

Lorsque mon formulaire se charge, avant que la ComboBox ne soit remplie et sélectionnée, cet événement (SelectedIndexChanged) se déclenche. Comment puis-je empêcher le code contenu dans cet événement de s'exécuter avant le chargement complet du formulaire ? J'ai essayé de tester .SelectedIndex mais il renvoie 0.

1voto

FeRtoll Points 968

En vb design/editeur mettre combobox enabled property a false et ensuite ajouter après avoir chargé tout dans la combobox combobox1.enabled=true

qui vous aideront !

1voto

TWood Points 901

Cela se produit parce que lorsque vous ajoutez des éléments à votre liste déroulante au démarrage, celle-ci sélectionne automatiquement le premier élément de la liste comme valeur à afficher (comportement par défaut de la liste déroulante). Cette sélection par défaut du premier élément entraîne l'activation du gestionnaire selectedindexchanged et l'exécution de votre routine.

Ce que vous devriez faire, c'est envisager d'utiliser addhandler et removehandler.

Par exemple :

la routine de changement d'index de votre combobox s'appelle "indexchangedroutine" et votre combobox s'appelle "mycombobox".

Au démarrage :

addhandler mycombobox.selectedindexchanged, addressof indexchangedroutine

la portion addressof est le nom de la routine que vous voulez appeler lorsque l'événement de ce contrôle se déclenche.

Pour éviter que la routine ne se déclenche au démarrage, vous devez d'abord remplir les éléments de votre combobox, puis appeler addhandler pour lier l'événement et la logique.

Si vous avez besoin d'effectuer une mise à jour (comme une minuterie de mise à jour), vous pouvez appeler removehandler au lieu de addhandler et cela dissociera le lien entre la logique et l'événement du contrôle. Vous pouvez effectuer votre mise à jour et, lorsque vous avez terminé, vous pouvez à nouveau appeler addhandler pour les relier à nouveau.

J'espère que cela vous aidera. Il peut sembler qu'il y a plus de code impliqué, mais cette méthode évite d'utiliser des solutions de fortune comme les drapeaux "been here" dans votre routine selectedindexchanged.

0voto

Alex Points 724

Faire moi.Validate.children a fonctionné

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X