Странная проблема с DataGridviewComboboxCell, пытаясь автоматически изменениями
-
25-09-2019 - |
Вопрос
Итак, моя цель - однажды пользователь нажимает на элемент из выпадающего списка, ячейка автоматически вызовет в EndedIt (). Самая странная вещь состоит в том, что код ниже будет работать на 2-т-н ComboboxeScells, которые я выпадаю, и выбираю значения, но никогда не первого. Есть ли что-то, что я скучаю здесь ??
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);
}
Следует добавить здесь, что я наследую от DataGridView, если это не очевидно
Решение
Когда что-то вроде "Самая странная вещь состоит в том, что код ниже будет работать на двухуровневых комбинации, которые я выпадаю и выбираю значения, но никогда не первый«Бывает, это часто потому, что событие происходит до того, как то, что вам нужно.
Свидеть свой пример, я бы сказал, что первый раз, когда вы нажимаете,
DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;
дает тебе control == null
.
Может быть, вы должны изменить событие, выбранное, чтобы сделать ваши вещи из Click
к SelectedIndexChanged
или SelectedValueChanged
?
Надеюсь это поможет,