检测DataGridViewComboBoxCell中相同项的选择

时间:2012-05-31 14:25:51

标签: c# winforms datagridview datagridviewcomboboxcell

我在C#winform应用程序中有一个datagridview和datagridviewcomboboxcell。因为CellValueChanged事件触发,我很容易捕获选择新项目的时间。但是,我希望能够检测组合框何时打开,但是用户选择了已经选择的相同值。我怎么能抓住这个?

2 个答案:

答案 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