[C#] DataGridViewで改行処理のShift+Enterを無効、もしくは別のキーに置き換える
DataGridViewのセルに複数行入力できるように
DefaultCellStyle.WrapMode = DataGridViewTriState.True
を設定した状態でセルのShift+Enterで左セルに移動させようとして嵌った。
(この時点でShift+Enterがセル内改行になっている)
(改行はAlt+Enterでさせるという要件)
WrapModeプロパティにTrueが設定されているとProcessDialogKeyやProcessDataGridViewKeyで
Shift+Enterを捕捉できないんですね。(捕捉できずにセル内改行される)
対応としてはDataGridViewを継承したDataGridViewExを用意し、以下を追加。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { Keys keyCode = (keyData & Keys.KeyCode); Keys keyModifiers = (keyData & Keys.Modifiers); if (keyCode == Keys.Enter && keyModifiers == Keys.Shift) { // Shift+Enterを無効にする return true; } return base.ProcessCmdKey(ref msg, keyData); }
これでセルフォーカス中にShift+Enterしても何も起こりません。(改行されない)
別の役割を与えたい場合はDataGridViewのKeyDownイベントなどでShift+Enterを捕捉して処理をする。
実戦で役立つ C#プログラミングのイディオム/定石&パターン
- 作者: 出井秀行
- 出版社/メーカー: 技術評論社
- 発売日: 2017/02/18
- メディア: 大型本
- この商品を含むブログ (1件) を見る