C#winformアプリケーションにdatagridviewcomboboxcellを含むdatagridviewがあります。CellValueChangedイベントが発生するため、新しいアイテムが選択されたときに簡単にキャプチャできます。ただし、コンボボックスがいつ開かれたかを検出できるようにしたいのですが、ユーザーはすでに選択されているのと同じ値を選択します。どうすればこれをキャプチャできますか?
質問する
988 次
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 に答える