通过箭头键单击防止按钮聚焦

时间:2015-11-30 20:02:15

标签: c# winforms

如果用户按下其中一个箭头键,表单上的按钮是否聚焦,如何防止这种情况发生?  我正在编写一个小游戏,所以这会阻止用户移动。对于模糊的解释感到抱歉。

编辑:

播放器是PictureBox,其中包含一个图形:

private async void Form1_KeyDown(object sender, KeyEventArgs e)

2 个答案:

答案 0 :(得分:2)

处理此方案的一种方法是设置form.KeyPreview = true(请参阅MSDN),然后处理KeyPress / KeyDown事件处理程序中的键:

为KeyPress事件引用MSDN:

  

要仅在表单级别处理键盘事件而不启用其他控件来接收键盘事件,请设置   表单的KeyPress中的KeyPressEventArgs.Handled属性   事件处理方法为true。

测试keysEvent中的箭头,以您需要的方式管理它们并设置Handled = true以避免默认行为(将焦点移至下一个控件)

答案 1 :(得分:1)

Form.cs中覆盖ProcessCmdKey,如下所示:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
     if (!msg.HWnd.Equals(Handle) &&
         (keyData == Keys.Left || keyData == Keys.Right ||
          keyData == Keys.Up || keyData == Keys.Down))
          return true;
     return base.ProcessCmdKey(ref msg, keyData);
}