1

私はC#でポンを作る作業をしていますが、問題が発生しました。KeyPreviewをオンにしています。これが私のコードです

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Up || e.KeyChar == (char)Keys.W) {
        picPaddle.Top -= 10;
    }
    else if (e.KeyChar == (char)Keys.Down || e.KeyChar == (char)Keys.S) {
        picPaddle.Top += 10;
    }
}

いずれかのキーを押しても何も起こりません。キー押下が機能するのは、(char)Keys.Enterの条件をテストする場合のみです。どうしてこれなの?Enter以外のキーに対してフォームにKeyPressを使用させるにはどうすればよいですか?

4

2 に答える 2

3

代わりに、KeyDownメソッドをオーバーライドしてみてください。

protected override void OnKeyDown(KeyEventArgs e) {
  if (e.KeyCode == Keys.Up || e.KeyCode == Keys.W) {
    picPaddle.Top -= 10;
  } else if (e.KeyCode == Keys.Down || e.KeyCode == Keys.S) {
    picPaddle.Top += 10;
  }

  base.OnKeyDown(e);
}

.NETのKeyDownとKeyPressの違いは何ですか?も参照してください。

于 2012-12-27T23:26:31.933 に答える
-1

KeyPress イベントは、コントロールにフォーカスがあるときに機能します。keydown イベントは常に機能します。=> keydown イベントを傍受する

于 2012-12-27T23:54:52.923 に答える