0

我在 DataGridView 中有一个 DataGridViewComboCell。

我需要知道用户何时单击了该组合单元格中的选择之一。

我找不到发生这种情况时触发的事件。

对于大多数名称听起来像他们会这样做的事件,他们不会做任何事情,直到用户改变焦点。

我不知道微软为什么要等待用户改变焦点来做某事。我当然不期望这种行为。分配给我的 QA 人员肯定不会。

我不敢相信当有人点击它时 Clicked() 不会触发。ContentClicked 或其他单击方法也没有。

以下是我尝试过的所有事件:CellContentClick、CellEndEdit、SelectionChanged、Click、CellStateChanged、CellClick、CellValueChanged。

在用户改变焦点之前,它们都不会改变!

4

1 回答 1

1

也许您正在寻找SelectedIndexChanged. DataGridViewComboBoxCell您必须在 中找到该事件DataGridViewComboBoxEditingControl,如下所示:

//EditingControlShowing event handler for your dataGridView1
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e){
  ComboBox combo = e.Control as ComboBox;
  if(dataGridView1.CurrentCell.OwningColumn == column_you_want){
     combo.SelectedIndexChanged -= combo_SelectedIndexChanged;
     combo.SelectedIndexChanged += combo_SelectedIndexChanged;
  }
}
private void combo_SelectedIndexChanged(object sender, EventArgs e){
   //....
}
于 2013-10-22T21:15:22.113 回答