I know this is an old question, but I believe that I have improved the answer to the upper voice.
IDataGridViewEditingControl _iDataGridViewEditingControl; private void SlotTimesDGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (_iDataGridViewEditingControl is DataGridViewComboBoxEditingControl) { DataGridViewComboBoxEditingControl iDataGridViewEditingControl = _iDataGridViewEditingControl as DataGridViewComboBoxEditingControl; iDataGridViewEditingControl.KeyPress -= SlotTimesDGV_EditingControlShowing_KeyPress; } if (e.Control is DataGridViewComboBoxEditingControl) { DataGridViewComboBoxEditingControl iDataGridViewEditingControl = e.Control as DataGridViewComboBoxEditingControl; iDataGridViewEditingControl.KeyPress += SlotTimesDGV_EditingControlShowing_KeyPress; _iDataGridViewEditingControl = iDataGridViewEditingControl; } } private void SlotTimesDGV_EditingControlShowing_KeyPress(object sender, KeyPressEventArgs e) { MessageBox.Show(""); }
By having an IDataGridViewEditingControl instance variable, you can remove the KeyPress event that will result in duplicate calls when moving through cells, and your event is not limited to just one cell type.
Colin steel
source share