J'ai un formulaire avec un ComboBox
qui fournit une liste déroulante. Sur la comboBox SelectedIndexChanged event
, j'exécute du code, mais je ne veux pas que ce code s'exécute lorsque le formulaire se charge. Malheureusement, lorsque je charge le formulaire (avant de faire une sélection dans la combobox), SelectedIndexChanged
de la combobox se déclenche (je pense que lorsque la combobox est databinding
). Existe-t-il un moyen d'éviter un tel comportement?
Si vous souhaitez réagir uniquement lorsque l'utilisateur modifie l'élément sélectionné dans la zone de liste déroulante, il est préférable de s'abonner à SelectionChangeCommitted .
Vous pouvez simplement dissocier l'événement SelectedIndexChanged
, appeler votre fonction fill
et lier à nouveau l'événement SelectedIndexChanged
. Malheureusement, cela ne fonctionne pas avec une grille.
Par exemple:
this.cmb.SelectionChanged -= new System.EventHandler(this.cmb_SelectionChanged);
cmb.fill(); //Your function
this.cmb.SelectionChanged += new System.EventHandler(this.cmb_SelectionChanged);
Veillez à définir la propriété DataSource
dans votre fonction onload()
après avoir affecté les propriétés ValueMember
et Datamember
.
Cela vous aidera à résoudre votre problème!
Pourquoi ne pas avoir un indicateur boolean
qui indique quand votre Form
a fini de se charger?
Dans votre événement SelectionChanged
, vérifiez si l'indicateur boolean
est true
. S'il s'agit de true
, gérez l'événement, sinon ignorez-le.
VB
RemoveHandler lbxNomes.SelectedIndexChanged, AddressOf lbxNomes_SelectedIndexChanged
lbxNomes.DataSource = dst
Label1.Text = String.Format("Encontrados {0} Sócios nesta pesquisa", dst.Rows.Count)
Label1.Visible = True
AddHandler lbxNomes.SelectedIndexChanged, AddressOf lbxNomes_SelectedIndexChanged