C#中的按键事件--移动图片框

C#中的按键事件--移动图片框,c#,winforms,C#,Winforms,我试图通过按键事件上下移动PictureBox(picUser)。我是C#的新手,并且能够通过VB完成这项工作。因此,我对以下代码的问题感到困惑: private void picUser_keyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if (e.KeyCode == Keys.W) { picUser.Top -= 10; }

我试图通过按键事件上下移动PictureBox(picUser)。我是C#的新手,并且能够通过VB完成这项工作。因此,我对以下代码的问题感到困惑:

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

代码没有“错误”,picturebox只是不移动。

它可能不工作,因为
picUser
没有焦点,因此不会接收任何按键事件


如果
picUser
具有焦点,您的代码应该可以工作。但是,更好的方法可能是将表单的
KeyPreview
属性设置为
true
,然后将上面的代码放入表单的
keyDown
事件中(同时设置
e.Handled=true
,以防止键事件传递给具有焦点的控件).

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

我建议使用存放
图片盒的
表单的
向下键
,并使用相同的确切代码:

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;
     }
}

也许你可以描述问题或提供错误日志?很好。我忘了在代码块后添加那个部分。已经进行了调整