2009-09-02 27 views
1

winforms keydownイベントはどのように処理できますか?winforms keydownイベントが動作しない

実際に私はこの

private void test_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Escape) 
     { 
      test2 tst2 = new test2(); 
      tst2.Show(); 
     } 
    } 

ようにしようとしたが、それは一度だけ働いています。何が問題ですか?

答えて

3

オブジェクトがフォーカスを取得している可能性がありますので、フォームには後続のキーダウンイベントが発生しません。

test2はフォームですか?

私は(ちょうどいくつかの特別な方法で扱われていないでその脱出を表示するために)、以下を試してみましたが、期待通りに動作します:

LABEL1は、フォーム上のラベルである
int _i = 0; 
    private void Form1_KeyDown(object sender, KeyEventArgs e) { 
     if (e.KeyCode == Keys.Escape) { 
      label1.Text = (++_i).ToString(); 
     } 
    } 

フォームにキャンセルボタンを設定してはいけません。つまり、CancelButtonnullである必要があります。それ以外の場合はESCを押すとアプリケーションが終了します。
これを指摘してくれたHenk Holtermanに感謝します。

+4

+1ですが、これにはKeyPreview = trueとCancelButton = nullが必要であることを言及する必要があります。 –

+0

Thanks、CancelButtonについての投稿を修正しましたが、なぜKeyPreviewですか?本気ですか? –

+0

KeyPreviewをオフにして、フォーカスをTextBoxに配置するだけです。 –

関連する問題