Sonderbares Problem mit DataGridViewComboBoxCell, versuchen zu autocommit Änderungen
-
25-09-2019 - |
Frage
Also mein Ziel sobald sich ein Benutzer klickt auf das Element aus der Dropdown-Liste ist, wird die Zelle automatisch EndEdit () aufrufen. Das Seltsamste ist, dass der folgende Code wird die Arbeit an den 2.-n ComboBoxesCells, dass ich fallen nach unten und wählen Sie Werte aus, aber nie die erste. Gibt es etwas, was ich bin fehlt hier ??
protected override void OnCellClick(DataGridViewCellEventArgs e)
{
base.OnCellClick(e);
DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;
if (control != null)
{
control.DropDownClosed += new EventHandler(control_DropDownClosed);
}
}
void control_DropDownClosed(object sender, EventArgs e)
{
this.EndEdit();
DataGridViewComboBoxEditingControl control = sender as DataGridViewComboBoxEditingControl;
control.DropDownClosed -= new EventHandler(control_DropDownClosed);
}
Sollte hier hinzufügen, dass ich von Datagridview bin vererben, wenn das nicht offensichtlich ist,
Lösung
Wenn so etwas wie „ Das Seltsamste ist, dass der folgende Code wird die Arbeit an den 2.-n ComboBoxesCells, dass ich fallen nach unten und wählen Sie Werte aus, aber nie die erste “ geschieht, ist es oft, weil die Ereignis geschieht, bevor etwas, das Sie brauchen, ist getan.
Seing Ihr Beispiel, ich würde sagen, dass das erste Mal, wenn Sie auf,
DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;
gibt Ihnen control == null
.
Vielleicht sollten Sie das Ereignis ändern gewählt Ihr Material von Click
zu SelectedIndexChanged
oder SelectedValueChanged
zu tun?
Hope, das hilft,