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.
Réponses
Trop de publicités?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.