コントロールのキーイベントをフォームで処理する
通常、KeyPressイベントやKeyDownイベント等、コントロールに対してキー入力された際のイベント処理は、それぞれのコントロールに対して設定します。
しかし、「Enterキーを押したら次のコントロールへフォーカスを移す」等の、フォーム内のコントロール全てに該当するイベントの場合、コントロールの数が多い場合設定が面倒です。
また、コントロールを新規で追加した場合、それらにもイベントを設定してあげないといけないため、作業漏れのリスクも可能性も高まります。
そんな悩みを解決してくれるのが、フォームのKeyPreviewプロパティです。
フォーム名.KeyPreview = true
それではサンプルを見てみましょう。
以下の記述を行うことで、自身のフォーム内のコントロール全てに対して、フォームのキーイベントを設定するだけで適用できるようになります。
フォームのLordイベント内に記述している点に注意してください。
1 2 3 4 |
private void Form1_Load(object sender, EventArgs e) { this.KeyPreview = true; } |
上記を実行することで、フォームのキーイベントを記述するだけで、フォーム内の各コントロールにキーイベントが適用されるようになります。
KeyPreviewプロパティの設定は、上記のようにフォームのLoadイベント内に記述するか、デザイン画面のプロパティから行うことが可能です。
以上が、全コントロールのキーイベントをフォームのキーイベントで処理する「KeyPreview」プロパティの設定です。
ぜひ参考にしてみてください。