-1

我在问这个问题之前确实搜索过谷歌。基本上我已经尝试了一个小蛇游戏。我的游戏从向下箭头键开始。此箭头键在焦点窗口形成时起作用。如果我们删除每种类型的按钮和控件,然后将焦点放在 windows 窗体上,否则不会将焦点设置在 windows 窗体上。我刚刚在按钮上添加了按钮焦点设置。任何人的帮助,并提前感谢..

在此处输入图像描述

 private void Key_down(object sender, KeyEventArgs e)
    {
        int xx = pictureBox1.Location.X;
        int yy = pictureBox1.Location.Y;
        i = xx;
        ii = yy;

        if (e.KeyCode == Keys.Right)
        {
          //  x = x + 1;
           // MessageBox.Show("Test");
       //     pictureBox1.DisplayRectangle = Rectangle.
           cr = true;
           cl = false;
           cu = false;
           cd = false;
         // pictureBox1.Location = new Point(x, y);

        }
        else if (e.KeyCode == Keys.Left)
        {
            cl = true;
            cr = false;
            cu = false;
            cd = false;
        }
        else if (e.KeyCode == Keys.Up)
        {
            cu = true;
            cl = false;
            cr = false;
            cd = false;
        }

        else if (e.KeyCode == Keys.Down)
        {
            cd = true;
            cu = false;
            cr = false;
            cl = false;
        }
      //  pictureBox1.Location = new Point(x, y);

    }
4

3 回答 3

1

当我放入 Form 的 Load 事件时,这条线对我不起作用

    this.Focus();

它仅在我将其放入 Form's Shown 时才有效。我相信必须在表单完成加载后调用 Focus() 方法。

于 2018-10-01T09:58:48.803 回答
0

JamesB在评论中添加了正确答案:您只需KeyPreview将表单的属性设置为true,然后您的 KeyDown 方法将接收所有键事件,无论表单上的哪个控件具有焦点。请参阅:http: //msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx

于 2013-04-12T14:14:41.220 回答
0

添加this.Focus();为表单加载过程的最后一行

如果您想防止它失去焦点,请添加一个计时器并在.tick过程中添加this.Focus();并将间隔设置为 1000,以便它每秒检查表单是否具有焦点

希望这可以帮助

于 2013-04-12T14:04:59.043 回答