0

メイン フォームが読み込まれると、次のようにキー イベント ハンドラーを設定しようとしています。

private void FormMain_Load(object sender, EventArgs e)
{
    KeyDown += FormMain_KeyDown;
}

そして呼び出される関数:

private void FormMain_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Escape)
    {
        // Do something.
    }
}

問題は、フォームが Escape (または私が試した他のキー) に反応しないことです。そして面白いことに、同じプロジェクトの別のフォームが同様のコードを問題なく使用しています。誰かが私が間違っていることを教えてもらえますか?

4

1 に答える 1

6

フォームにはKeyPreviewというプロパティがあり、trueに設定する必要があります。次に、キーを押すとハンドラーが起動し、フォーカスを持つコントロール上のハンドラーが起動します。

于 2012-08-08T17:11:54.877 に答える