如何防止如果用户按下其中一个箭头键,窗体上的按钮将被聚焦?
我正在编程一个小游戏,所以这会阻止用户移动。对于模糊的解释抱歉。通过箭头键点击防止按钮被聚焦
编辑:
球员是在它的图形一个PictureBox
由移动:
private async void Form1_KeyDown(object sender, KeyEventArgs e)
如何防止如果用户按下其中一个箭头键,窗体上的按钮将被聚焦?
我正在编程一个小游戏,所以这会阻止用户移动。对于模糊的解释抱歉。通过箭头键点击防止按钮被聚焦
编辑:
球员是在它的图形一个PictureBox
由移动:
private async void Form1_KeyDown(object sender, KeyEventArgs e)
在你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);
}
这是“WM_GETDLGCODE”的WinForms等价物?是的,我衷心赞同。 – Medinoc
处理这种情况的一种方法是设置form.KeyPreview = true
(参见MSDN),然后处理在按键响应/ KeyDown事件处理程序的按键:报价MSDN的按键事件
:
仅在窗体级别处理键盘事件,而不是让其他控件接收键盘事件,设置将事件处理方法中的KeyPressEventArgs.Handled属性的 事件处理方法设置为true。
测试在您keysEvent箭头,管理交给他们处理你需要的方式和设定= true来避免违约行为(将焦点移至下一个控件)
不,不会工作。现在它已经从一开始就将焦点集中在了按钮上。 –
应的按钮都集中?即你想让焦点总是保持形式而不是任何按钮? –
@IvanStoev Jup,这将是我的期望,但你应该仍然能够随时按下他们。 –
看到这个http://stackoverflow.com/questions/32823525/how-to-stop-pressing-button-using-keyboard-keys-like-spacebar-or-enter-c-shar/32825190#32825190 –