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