此行爲寫入到DataGridViewComboBoxEditingControl
的實現中。謝天謝地,它可以被覆蓋。首先,你必須創建上述編輯控件的子類,重寫OnSelectedIndexChanged
方法:
protected override void OnSelectedIndexChanged(EventArgs e) {
base.OnSelectedIndexChanged(e);
EditingControlValueChanged = true;
EditingControlDataGridView.NotifyCurrentCellDirty(true);
EditingControlDataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
這將確保DataGridView
正確通知在組合框中選擇項的變化,當它發生。
然後,您需要繼承DataGridViewComboBoxCell
的子類並覆蓋EditType
屬性以從上面返回編輯控件子類(例如return typeof(MyEditingControl);
)。這將確保在單元進入編輯模式時創建正確的編輯控件。
最後,您可以將DataGridViewComboBoxColumn
的CellTemplate
屬性設置爲單元子類的實例(例如myDataGridViewColumn.CellTemplate = new MyCell();
)。這將確保爲網格中的每一行使用正確類型的單元格。