不可逆な毎日ブログ

2度と過ごすことのない毎日をつらつらと・・・

キー入力を取得する

なぜか、[ESC]キーで終了させることができるようにしていたアプリケーションが
デバッグ環境では終了できるが、実機ではできなくなることもある。
どうしてだろう、と思っていたところ、ある記事を発見。

KeyPressなどのキーイベントをすべてフォームが受け取るようにする: .NET Tips: C#, VB.NET
緑のバイク ★ 初めてのC# ユーザ入出力

// Form も、すべてのキーイベントを受け取るように設定する
this.KeyPreview = true ;  // 既定値は false


Form.KeyPreview プロパティ (System.Windows.Forms)

このプロパティを true に設定すると、KeyPress、KeyDown、KeyUp の各イベントをすべてフォームが受け取ります。
フォームのイベントハンドラでキーストロークの処理が完了してから、フォーカスを持つコントロールにそのキーストロークが割り当てられます。
(略)
このプロパティを使用してアプリケーションのほとんどのキーストロークを処理し、フォームでキーストロークを
処理するか、キーストロークを処理するために適切なコントロールを呼び出すことができます。