2011-01-27 9 views
2

Lorsque mon formulaire est chargé, avant que le composant ComboBox ait été rempli et sélectionné, cet événement (SelectedIndexChanged) est déclenché. Comment puis-je empêcher le code à l'intérieur de cet événement d'être exécuté avant que le formulaire ne soit complètement chargé? J'ai essayé des tests pour .SelectedIndex mais il renvoie 0.vb.net/winform - ComboBox SelectedIndexChanged?

+0

Si SelectedIndex est 0 et non -1, un élément * a * été sélectionné. Par votre code, regardez la trace de la pile. –

Répondre

1

dans la conception/éditeur de vb mis combobox enabled property-false puis ajouter une fois que vous chargez tous combobox combobox1.enabled=true

qui vous aidera!

+0

cela vous a-t-il été utile? :) – FeRtoll

+0

pas. n'a pas aidé du tout. – Alex

0

Do me.Validate.children a fait un travail

1

ce qui se passe parce que vous ajoutez des articles à votre combobox au démarrage, il sélectionne automatiquement la première dans la liste que la valeur à afficher (combobox comportement par défaut). Cette sélection par défaut du premier élément provoque le déclenchement du gestionnaire selectedindexchanged et l'exécution de votre routine.

Ce que vous devez faire est d'utiliser addhandler et removehandler.

Par exemple:

votre index de routine a changé combobox est appelé "indexchangedroutine" et votre combobox est appelé "MyComboBox".

Au démarrage:

addhandler mycombobox.selectedindexchanged, addressof indexchangedroutine 

la partie AddressOf est le nom de la routine que vous voulez quand appelé événement se déclenche de ce contrôle.

Pour éviter que la routine ne se déclenche au démarrage, vous devez d'abord remplir les éléments de la liste déroulante et le second module d'ajout d'appel pour lier l'événement et la logique. En cas de besoin de faire une mise à jour (comme une minuterie de mise à jour), vous pouvez appeler removehandler au lieu de addhandler et il va dissocier le lien entre la logique et l'événement du contrôle. Vous pouvez faire votre mise à jour et quand vous avez terminé, on peut encore appeler addhandler pour les relier pour une utilisation ultérieure.

J'espère que cela vous aide. Il peut sembler qu'il y a plus de code impliqué, mais cette méthode évite d'utiliser des corrections hacky comme des drapeaux "été ici" dans votre routine selectedindexchanged.

Questions connexes