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