|
■No45849 (C#嫌い さん) に返信 > VisualStudio2008 C#で windwsフォームアプリケーションを作っています。 > たびたびすみません。 > > KeyPressEventを用いてタイピングゲームのようなものを作っています。
まず、このKeyPressイベントをどのコントロール(もしくはフォーム)に書いているかですね(現象からしてフォームのKeyPressイベントで処理しているように見受けられます。)
> スペースキー単体でタイプすると、フォーカスのある終了ボタンが反応してアプリケーション自体が終了してしまいます。 キー入力をフォームで処理していて、文字を表示するコントロールがLabelやPictureBoxのようなフォーカスを持たないコントロールの場合、且つコントロールに配置されているコントロールが前述のコントロールと終了ボタンのみの場合は同じ現象になると思います。
解決方法としては、いくつかあると思います。
案1:フォーカスを持たないLabelやPictureBoxを他のコントロールに変えて、KeyPressのイベントはそのコントロールで処理する。 案2:ボタンにフォーカスを持たせないようにする。 案3:UserControlにLabelもしくはPictureBoxを載せてキー処理をUserControlで処理する。
案1は代替えできそうなコントロールがある場合。
案2はBottonをカスタムコントロールで継承させて、コンストラクタかどこかのタイミングで Me.SetStyle(ControlStyles.Selectable, False) でスタイルを変更する。
一番簡単なのは案3のUserControlを使う方法。
|