所以我的目标是,一旦用户点击下拉列表中的项目,该单元格将自动调用EndEdit()。最奇怪的是,下面的代码将适用于我下拉并选择值的第二个-com 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
答案 0 :(得分:1)
当像“最奇怪的事情是下面的代码将工作在我下拉并选择值但从来没有第一个”的2-n ComboBoxesCells时,它通常是因为事件发生在您需要完成之前。
看看你的例子,我会说第一次点击时,
DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;
为您提供control == null
。
也许您应该更改所选择的活动,以便从Click
改为SelectedIndexChanged
或SelectedValueChanged
?
希望这有帮助,