以下、忘れないためのメモ書きです。
ボタンコントロールでは、Enterキーは特殊キーとなっているので、そのままでは、Enterは自動的に処理されて
しまいます。
それをコントロールするためには、以下の方法が一般的みたいです。
- PreviewKeyDownイベントにて、IsInputKeyプロパティをTrueにする。
- ProcessDialogKeyメソッドをオーバーライドする。
- 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