0

我正在努力做到这一点,当我按下向上箭头时,它会将图片框向上移动,向下箭头向下移动,等等。但我似乎无法让它工作。它给了我错误:

无法修改“System.Windows.Forms.Control.Location”的返回值,因为它不是变量

这是我的代码:

private void Form1_KeyDown(object sender, KeyEventArgs e)
        {

        if(e.KeyCode == Keys.Up)
        {
            ImgGuy.Location.Y--;
        }
        else if (e.KeyCode == Keys.Down)
        {
            ImgGuy.Location.Y++;
        }
        else if (e.KeyCode == Keys.Left)
        {
            ImgGuy.Location.X--;
        }
        else if (e.KeyCode == Keys.Right)
        {
            ImgGuy.Location.X++;
        }

任何帮助是极大的赞赏。

4

3 回答 3

1

您必须重新创建新的Location

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{
        Point l;

        if(e.KeyCode == Keys.Up)
        {
            l = new Point(ImgGuy.Location.X, ImgGuy.Location.Y - 1);
        }
        else if (e.KeyCode == Keys.Down)
        {
            l = new Point(ImgGuy.Location.X, ImgGuy.Location.Y + 1);
        }
        else if (e.KeyCode == Keys.Left)
        {
            l = new Point(ImgGuy.Location.X - 1, ImgGuy.Location.Y);
        }
        else if (e.KeyCode == Keys.Right)
        {
            l = new Point(ImgGuy.Location.X + 1, ImgGuy.Location.Y);
        }

        ImgGuy.Location = l;
}
于 2013-06-25T07:35:10.660 回答
0

尝试这个:

ImgGuy.Location = new Point(ImgGuy.Location.X+1, ImgGuy.Location.Y+1) // etc

问题是Location返回位置的副本。

或者,设置Control.LeftControl.Top代替。

于 2013-06-25T07:35:36.500 回答
0

你需要产生一个新的点

在这种情况下 X 增加又名左移

Pic.Location = new Point(Pic.Location.X + 1, Pic.Location.Y);
于 2013-06-25T07:40:44.210 回答