我在搜索谷歌之前先问过这个问题。基本上我已经尝试过一个小蛇游戏。我的游戏开始按箭头键。当焦点窗口形成时,此箭头键工作。如果我们删除每种类型的按钮和控件然后焦点转到窗体窗体,其他明智的焦点设置在窗体上。我刚刚在按钮上添加了按钮焦点设置。任何人的帮助和提前感谢..
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);
}
答案 0 :(得分:1)
当我输入Form的Load事件时,此行对我不起作用
this.Focus();
仅当我将其放在Form的Shown中时才起作用。 我相信必须在表单加载完成后调用Focus()方法。
答案 1 :(得分:0)
添加this.Focus();
作为表单加载过程的最后一行
如果你想防止它失去焦点,请添加一个计时器并在.tick
过程中添加this.Focus();
并将间隔设置为1000,以便每秒检查一次表单是否具有焦点
希望这有帮助
答案 2 :(得分:0)
JamesB
在评论中添加了正确的答案:您只需将表单的KeyPreview
属性设置为true
,然后您的KeyDown方法将接收所有关键事件,无论表格上的哪个控件有焦点。请参阅:http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx