下記の内容に関連して、コンボボックスタイプのDataGridViewセルの挙動を改善する例です。
DataGridViewのセルをDataGridViewComboBoxDellに指定している場合、コンボボックス右端の逆三角をクリックしてもすぐにドロップダウンリストは表示されません。マウスクリックだと、先にセル選択という処理が行われ、セルにフォーカスが設定され、その後改めてマウスでセルをクリックしたり、F4を押すとドロップダウンリストが表示されます。 これを簡略化する例です。ロジック等は下記のサイトを参考にさせてもらっています。
必要なロジックは下記の通り。まずはCellEnterイベント用の処理を記述します。内容は「選択されたセルがDataGridViewComboBoxCellであった場合に、セルを強制的に編集モードにして、それと同時に登場する編集モード用コントロールのDroppedDownプロパティをいじる」というものです。
private void dataGridView2_CellEnter(object sender, DataGridViewCellEventArgs e) { if (dataGridView2[e.ColumnIndex, e.RowIndex].GetType().Equals(typeof(DataGridViewComboBoxCell))) { dataGridView2.BeginEdit(false); ((DataGridViewComboBoxEditingControl)dataGridView2.EditingControl).DroppedDown = true; } }
次に、このCellEnter用メソッドがCellEndterイベントで発動するように、イベントハンドラーの設定をおこなってください。
dataGridView2.CellEnter += new DataGridViewCellEventHandler(dataGridView2_CellEnter);
これだけです。どうやらCellEnterイベントはいろんなタイミングでおきるようで、実際にはコンボボックスセルをクリックしても、他の場所でのイベントなども起きる事から、「セルがコンボボックスか」という判定処理は必須のようです。
参考まで。
実戦で役立つ C#プログラミングのイディオム/定石&パターン
- 作者: 出井秀行
- 出版社/メーカー: 技術評論社
- 発売日: 2017/02/18
- メディア: 大型本
- この商品を含むブログ (1件) を見る