如何通过触摸表单上的箭头键来移动按钮?

时间:2013-11-27 19:22:54

标签: c# winforms button

我想知道如何通过触摸键盘上的箭头键使按钮向上,向下,向右或向左移动。我试过了:

button1.Location.X += 1;

但是,我得到一个错误,说它不是一个变量。所以,我也试过了:

public int xPos, yPos;

然后,在form1_keydown下点了一下:

xPos = Convert.ToInt32(button1.Location.X);
yPos = Convert.ToInt32(button1.Location.Y);
if (e.KeyData == Keys.Up)
{
    xPos += 1;
}

但是,它只是不起作用。请帮忙。谢谢!

3 个答案:

答案 0 :(得分:2)

我过分简化了一点以表明它(我跳过你必须做的所有检查)但它可能是这样的:

switch (e.KeyData)
{
    case Keys.Right:
        button1.Location = new Point(button1.Left + 1, button1.Top);
        break;
    case Keys.Left:
        button1.Location = new Point(button1.Left - 1, button1.Top);
        break;
    case Keys.Up:
        button1.Location = new Point(button1.Left, button1.Top - 1);
        break;
    case Keys.Down:
        button1.Location = new Point(button1.Left, button1.Top + 1);
        break;
}

答案 1 :(得分:0)

你应该这样做:

button1.Location = new Point(button1.Location.X + 1, button1.Location.Y);

答案 2 :(得分:0)

您需要为按钮创建新位置,因为PointLocation属性类型)是struct,所以不能仅修改X或Y.

例如,您可以在表单的KeyUp事件中执行此操作(不要忘记实际连接事件,而不仅仅是复制/粘贴):

private void OnKeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Right)
    {
        button1.Location = new Point(button1.Location.X + 1, button1.Location.Y);
    }
}

重要说明:如果您这样做,请不要忘记在表单上设置KeyPreview = true;,否则密钥事件永远不会触发。