DataGridViewを編集時のEnterとかEscの動作を変更したい!
-------------------------------------------------
//フォームのキーダウンイベント
private void Form_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Enter:
case Keys.Escape:
MessageBox.Show("test");
break;
}
}
-------------------------------------------------
EnterとかEscは単純にフォームのキーダウンイベントで書いても拾ってくれない・・・
-------------------------------------------------
//DataGridViewをオーバーライド
public class DataGridViewPlus : DataGridView
{
protected override bool ProcessDialogKey(Keys keyData)
{
//Enter・Escキー押下時のイベントキャンセル
if (((keyData & Keys.KeyCode) == Keys.Enter) ||
((keyData & Keys.KeyCode) == Keys.Escape))
{
return false;
}
return base.ProcessDialogKey(keyData);
}
protected override bool ProcessDataGridViewKey
(KeyEventArgs e)
{
//Enter・Escキー押下時のイベントキャンセル
if ((e.KeyCode == Keys.Enter) ||
(e.KeyCode == Keys.Escape))
{
return false;
}
return base.ProcessDataGridViewKey(e);
}
}
-------------------------------------------------
DataGridViewをオーバーライドしてEnterとEscキーの処理をキャンセルすればフォームのキーダウンイベントで拾えるようになった。
オーバーライド内に直接処理を書いてもいいけどフォームで欲しいこともあったり。