“SelectedIndexChanged” événement dans ComboBoxColumn sur Datagridview
Je veux gérer cet événement SelectedIndexChanged" sur un DataGridViewComboBoxColumn,
et je l'ai mis sur "EditingControlShowing" l'événement de la gridview.
Le problème :
"SelectedIndexChanged" l'événement n'est pas déclenché lors de la première tentative de sélection d'un Élément dans la zone de liste déroulante, mais après la sélection de cet élément pour la deuxième fois, l'événement est déclenché et tout fonctionne bien !
Voici le code:
private void dgvRequest_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
ComboBox combo = e.Control as ComboBox;
if (combo != null)
{
if (dgvRequest.CurrentCell.ColumnIndex == col_ConfirmCmb.Index)
{
combo.SelectedIndexChanged -= combo_ConfirmSelectionChange;
combo.SelectedIndexChanged += combo_ConfirmSelectionChange;
return;
}
}
}
void combo_ConfirmSelectionChange(object sender, EventArgs e)
{
if (dgvRequest.CurrentCell.ColumnIndex != col_ConfirmCmb.Index) return;
ComboBox combo = sender as ComboBox;
if (combo == null) return;
MessageBox.Show(combo.SelectedText);//returns Null for the first time
}
Vous devez vous connecter pour publier un commentaire.
Les choses se compliquent car ils ont optimisé le DataGridView en avoir un seul contrôle de l'édition pour toutes les lignes. Voici comment j'ai géré une situation similaire:
Premier crochet un délégué à la EditControlShowing événement:
Puis dans le gestionnaire, crochet jusqu'à la EditControl de l'événement SelectedValueChanged: