2013年9月18日水曜日

DataGridViewを編集時のEnterとかEscの動作を変更したい [C#]

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キーの処理をキャンセルすればフォームのキーダウンイベントで拾えるようになった。

オーバーライド内に直接処理を書いてもいいけどフォームで欲しいこともあったり。

0 件のコメント:

コメントを投稿