コントロール

[C#] 全コントロールのキーイベントをフォームのキーイベントで処理する(KeyPreview)

コントロールのキーイベントをフォームで処理する

通常、KeyPressイベントやKeyDownイベント等、コントロールに対してキー入力された際のイベント処理は、それぞれのコントロールに対して設定します。

しかし、「Enterキーを押したら次のコントロールへフォーカスを移す」等の、フォーム内のコントロール全てに該当するイベントの場合、コントロールの数が多い場合設定が面倒です。

また、コントロールを新規で追加した場合、それらにもイベントを設定してあげないといけないため、作業漏れのリスクも可能性も高まります。

そんな悩みを解決してくれるのが、フォームのKeyPreviewプロパティです。

フォーム名.KeyPreview = true

それではサンプルを見てみましょう。

以下の記述を行うことで、自身のフォーム内のコントロール全てに対して、フォームのキーイベントを設定するだけで適用できるようになります。

フォームのLordイベント内に記述している点に注意してください。

上記を実行することで、フォームのキーイベントを記述するだけで、フォーム内の各コントロールにキーイベントが適用されるようになります。

KeyPreviewプロパティの設定は、上記のようにフォームのLoadイベント内に記述するか、デザイン画面のプロパティから行うことが可能です。
 
 
以上が、全コントロールのキーイベントをフォームのキーイベントで処理する「KeyPreview」プロパティの設定です。
ぜひ参考にしてみてください。