2

我在 C# winform 应用程序中有一个带有 datagridviewcomboboxcell 的 datagridview。由于 CellValueChanged 事件触发,我很容易捕捉到何时选择了新项目。但是,我希望能够检测到组合框何时打开,但用户选择了已选择的相同值。我怎样才能捕捉到这个?

4

2 回答 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 回答