読者です 読者をやめる 読者になる 読者になる

いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

Buttonにてエンターキーで遷移するようにする。(PreviewKeyDown, IsInputKey, Keys.Enter)

C#


以下、忘れないためのメモ書きです。


ボタンコントロールでは、Enterキーは特殊キーとなっているので、そのままでは、Enterは自動的に処理されて
しまいます。


それをコントロールするためには、以下の方法が一般的みたいです。

  1. PreviewKeyDownイベントにて、IsInputKeyプロパティをTrueにする。
  2. ProcessDialogKeyメソッドをオーバーライドする。
  3. IsInputKeyメソッドをオーバーライドする。


今回は、1の方法でやりました。尚、PreviewKeyDownイベントは.net 2.0から追加された
イベントになります。


例えば、ボタン上にて、EnterとShift+Enterでフォーカス移動したい場合は
以下のように捉えます。

private void Button_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e){

    if(e.KeyCode == Keys.Enter && e.Modifier = Keys.None){
        e.IsInputKey = true;
    }else if(e.KeyCode == Keys.Enter && e.Modifier = Keys.Shift){
        e.IsInputKey = true;
    }

}


上記の設定を行う事で、エンターキーとShift+エンターの場合には、KeyDownイベントが発生するようになります。
後は、それをフォーム側かボタン側で捕らえるだけです。



参考にさせていただいたリソースです。感謝m(_ _)m