簡體   English   中英

C#KeyDown不起作用

[英]C# KeyDown not working

我有一個圖片框,我想在按下某個鍵時重新放置它。 我在打乒乓球。 使用下面的代碼,我想制作播放器1的撥片,它是一個圖片框,應在按下鍵時上下移動。 以下代碼似乎無效:

public partial class Form1 : Form
{
    bool upPressed, downPressed;

    public Form1()
    {
        InitializeComponent();
    }

    private void PongTimer_Tick(object sender, EventArgs e)
    {
        if(upPressed){
            paddlePlayer1.Location = new Point(paddlePlayer1.Location.X, paddlePlayer1.Location.Y + 5);
        }
        if (downPressed)
        {
            MessageBox.Show("Numlock");
        }
    }

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if(e.KeyCode == Keys.Up){ 
            upPressed = true; 
        }
        if (e.KeyCode == Keys.NumLock)
        {
            downPressed = true;
        }
    }

    private void Form1_KeyUp(object sender, KeyEventArgs e)
    {
        if(e.KeyCode == Keys.Up){ 
            upPressed = false;
        }
    }
}

我使用Numlock來查看問題是否在圖片中,事實並非如此。 我已經將KeyPreview屬性設置為true,但這也無法解決。 計時器工作正常。

我希望這里的人可以告訴我我做錯了什么。

這是移動PictureBox的代碼示例:

  1. 將PictureBox拖放到窗體(在本例中為Form1)上。
  2. 將PictureBox的背景顏色更改為例如紅色。 (這種方式在運行時可見)。
  3. 實現Form1的KeyDown事件(在本例中為Form1_KeyDown)。
  4. 運行應用程序。
  5. 開始按下箭頭鍵,PictureBox將移動。

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        int x = pictureBox1.Location.X;
        int y = pictureBox1.Location.Y;

        if (e.KeyCode == Keys.Right) { x += 1; }
        else if (e.KeyCode == Keys.Left) { x -= 1; }
        else if (e.KeyCode == Keys.Up) { y -= 1; }
        else if (e.KeyCode == Keys.Down) { y += 1; }

        pictureBox1.Location = new Point(x, y);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM