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 に答える