After I set "EditOnEnter" to be true, the DataGridViewComboBoxCell
still takes two clicks to open if I don't click on the down arrow part of the combo box.
Anyone have any clue how to fix this? I've got my own DataGridView
class that I use, so I can easily fix this issue system-wide with a few smart event handlers I hope.
Thanks.
Since you already have the DataGridView
's EditMode
property set to "EditOnEnter", you can just override its OnEditingControlShowing
method to make sure the drop-down list is shown as soon as a combo box receives focus:
public class myDataGridView : DataGridView
{
protected override void OnEditingControlShowing(DataGridViewEditingControlShowingEventArgs e)
{
base.OnEditingControlShowing(e);
if (e.Control is ComboBox) {
SendKeys.Send("{F4}");
}
}
}
Whenever an edit control in your DataGridView
control gets the input focus, the above code checks to see if it is a combo box. If so, it virtually "presses" the F4 key, which causes the drop-down portion to expand (try it when any combo box has the focus!). It's a little bit of a hack, but it works like a charm.