我在C#winform应用程序中有一个datagridview和datagridviewcomboboxcell。因为CellValueChanged事件触发,我很容易捕获选择新项目的时间。但是,我希望能够检测组合框何时打开,但是用户选择了已经选择的相同值。我怎么能抓住这个?
答案 0 :(得分: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。每次打开和关闭组合框时都会触发此解决方案 - 如果您需要其他内容(例如当组合框提交它更改为网格时)更新您描述确切的问题行为。
答案 1 :(得分:0)
尝试查看事件: - 落下 - DropDownClosed