2
我想在DataGridViewComboBoxColumn上处理此事件“SelectedIndexChanged”, 并将其设置为gridview的“EditingControlShowing”事件。Datagridview上的ComboBoxColumn中的“SelectedIndexChanged”事件
问题: “SelectedIndexChanged”事件在第一次尝试从组合框中选择项目时未触发,但在第二次选择该项目后,事件被触发并且一切正常!
下面是代码:
private void dgvRequest_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
ComboBox combo = e.Control as ComboBox;
if (combo != null)
{
if (dgvRequest.CurrentCell.ColumnIndex == col_ConfirmCmb.Index)
{
combo.SelectedIndexChanged -= combo_ConfirmSelectionChange;
combo.SelectedIndexChanged += combo_ConfirmSelectionChange;
return;
}
}
}
void combo_ConfirmSelectionChange(object sender, EventArgs e)
{
if (dgvRequest.CurrentCell.ColumnIndex != col_ConfirmCmb.Index) return;
ComboBox combo = sender as ComboBox;
if (combo == null) return;
MessageBox.Show(combo.SelectedText);// returns Null for the first time
}
尼斯片段。它帮助我。当您在第二个Lambda表达式中编写visSender时,这是如何定义的? – MoonKnight 2011-08-25 13:10:35
由于这不能在运行时定义,而没有做一些更人为的编码?非常感谢... – MoonKnight 2011-08-25 15:39:10
EventHandler委托的定义是(object sender,EventArgs e)。 visSender是触发EditingControl.VisibleChanged事件的对象。在这种情况下,lambda期望它是触发可见性更改的编辑控件。这回答了你的问题了吗? – 2011-08-26 14:07:54