DataGridViewComboBoxCellを1クリックでドロップダウンさせる方法

DataGridViewの実装でDataGridViewComboBoxCellを使うことがたまにある。
このコンボボックスは普通のSystem.Windows.FormsのComboBoxと仕様が違い、デフォルトだと1クリックではリストがドロップダウンしてくれないのだ。

f:id:powerbombkun:20220106205948p:plain
ドロップダウンしない

2回クリックして初めてドロップダウンするのがデフォルトの仕様らしい。
これだとユーザーはとってもめんどくさいので、これを1クリックでドロップダウンするよう実装する。

まずはDataGridViewのイベントに以下を追加。

_dataGridView.CellEnter += _dataGridView_CellEnter;

その後にイベント処理で以下のように実装する。

private void _dataGridView_CellEnter(object sender, DataGridViewCellEventArgs e)
{
    if (_dataGridView[e.ColumnIndex, e.RowIndex].GetType().Equals(typeof(DataGridViewComboBoxCell)))
    {
        _dataGridView.BeginEdit(false);
        ((DataGridViewComboBoxEditingControl)_dataGridView.EditingControl).DroppedDown = true;
    }
}

これで1クリックでコンボボックスのリストがドロップダウンしてくれるようになった。