我在 C# winform 应用程序中有一个带有 datagridviewcomboboxcell 的 datagridview。由于 CellValueChanged 事件触发,我很容易捕捉到何时选择了新项目。但是,我希望能够检测到组合框何时打开,但用户选择了已选择的相同值。我怎样才能捕捉到这个?
问问题
988 次
2 回答
2
EditingControlShowing
事件和一些组合框事件的组合起作用1。
EditingControlShowing
允许我们访问嵌入式组合框控件:
dataGridView1.EditingControlShowing += new
DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);
void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
ComboBox control = e.Control as ComboBox;
if (control != null)
{
control.DropDown += new EventHandler(control_DropDown);
control.DropDownClosed += new EventHandler(control_DropDownClosed);
}
}
我在表单中添加了一个私有类级别变量来存储组合框选定的索引。
void control_DropDown(object sender, EventArgs e)
{
ComboBox c = sender as ComboBox;
_currentValue = c.SelectedIndex;
}
void control_DropDownClosed(object sender, EventArgs e)
{
ComboBox c = sender as ComboBox;
if (c.SelectedIndex == _currentValue)
{
MessageBox.Show("no change");
}
}
1.每次打开和关闭组合框时都会触发此解决方案 - 如果您想要其他内容(例如当组合框提交更改到网格时),请更新您描述确切行为的问题。
于 2012-06-03T09:14:20.253 回答
0
尝试查看事件: - DropDown - DropDownClosed
于 2012-05-31T14:33:41.553 回答