2017-07-31 2 views
1

J'ai un contrôle DataGridViewComboBoxCell avec quelques éléments dedans. Je voudrais obtenir les valeurs lorsque l'utilisateur choisit une valeur dans la liste déroulante. Je ne peux pas utiliser DataGridViewComboBoxColumn où EditingControlShowing peut être utilisé. J'ai besoin d'un gestionnaire d'événements similaire pour DataGridViewComboBoxCell. Quelqu'un peut-il aider les pls.Comment configurer l'événement Datagridviewcombobox cell selectionchanged?

S'il vous plaît trouver exemple de code ci-dessous:

private DataGridViewComboBoxCell NameDropDown = new DataGridViewComboBoxCell();  

public void SetDropDown(int index) 
     { 
     NameDropDown = new DataGridViewComboBoxCell();   
     DropDownValues(index); 
     for (int j = 0; j < DropDownOld.Items.Count; j++) 
     { 
      NameDropDown.Items.Add(DropDownOld.Items[j]); 
     } 
     dataGridView1.Rows[index].Cells[4] = NameDropDown; 
     } 

Répondre

1

Oui, vous pouvez utiliser l'événement EditingControlShowing pour obtenir une poignée à la zone de liste déroulante.

Ensuite, branchez un gestionnaire d'événements pour le SelectedIndexChanged ou tout autre événement que vous voulez et le code ..!

DataGridViewComboBoxEditingControl cbec = null; 

private void dataGridView1_EditingControlShowing(object sender, 
          DataGridViewEditingControlShowingEventArgs e) 
{ 
    if (e.Control is DataGridViewComboBoxEditingControl) 
    { 
     cbec = e.Control as DataGridViewComboBoxEditingControl; 
     cbec.SelectedIndexChanged -=Cbec_SelectedIndexChanged; 
     cbec.SelectedIndexChanged +=Cbec_SelectedIndexChanged; 
    } 
} 

private void Cbec_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (cbec != null) Console.WriteLine(cbec.SelectedItem.ToString()); 
} 
+0

Merci cela a fonctionné. bonne journée. – Newbie0111