C#中的按键事件 -- 移动PictureBox

3

我正在尝试通过键盘按键事件移动一个PictureBox(picUser)上下。我对C#还比较陌生,但是在VB中我能够做到这一点。因此,我对以下代码存在疑惑:

    private void picUser_keyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        if (e.KeyCode == Keys.W)
        {
            picUser.Top -= 10;
        }
    }

这段代码没有错误,只是图片框没有移动。


也许您可以描述一下问题或提供错误日志? - asawyer
好的,我忘记在代码块后面添加那部分了。已经进行了调整。 - bananajunk
2个回答

6

PictureBox没有KeyDown事件。它有一个PreviewKeyDown事件,需要PictureBox获得焦点。

建议使用承载PictureBoxformKeyDown事件,并使用完全相同的代码:

public Form1()
{
     InitializeComponent();
     this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
}

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
     if (e.KeyCode == Keys.W)
     {
         picUser.Top -= 10;
     }
}

2

可能是因为picUser没有获得焦点,因此无法接收任何按键事件。

如果picUser具有焦点,则您的代码应该可以工作。然而,更好的方法可能是将表单的KeyPreview属性设置为true,然后将您的代码放在表单的keyDown事件中(还要设置e.Handled = true,以防止将按键事件传递给具有焦点的任何控件)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接