如果用户按下其中一个箭头键,表单上的按钮是否聚焦,如何防止这种情况发生? 我正在编写一个小游戏,所以这会阻止用户移动。对于模糊的解释感到抱歉。
编辑:
播放器是PictureBox
,其中包含一个图形:
private async void Form1_KeyDown(object sender, KeyEventArgs e)
答案 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);
}