2
所以我的目标是一旦用户点击下拉列表中的项目,单元格将自动调用EndEdit()。最奇怪的是,下面的代码将工作在2nd-n ComboBoxesCells上,我可以从下拉列表中选择数值,但从第一个选择数值。有什么我在这里失踪?DataGridViewComboBoxCell奇怪的问题,试图自动提交更改
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继承如果这不是明显
嗯,我只是挂钩控件的事件处理程序,当它不是null。在第一次尝试时,控件不为null,我可以连接到“control_DropDownClosed”事件。我甚至可以在事件中断点。 在第一次尝试之后,EndEdit()将该值恢复为选择下拉项目之前的值。所有后续调用该函数中的EndEdit()都可以正常工作,所以我非常困惑。 – Tom 2010-12-10 17:15:31