我用一个简单的游戏创建了一个Form
。游戏需要箭头键等的输入,但是我在窗体上放置的一些按钮正在窃取这些键事件。
据我了解,这是任何Windows Forms应用程序的默认行为,以便用户能够在各个控件之间更改焦点。
我的问题是,如何解决这个问题并确保可以使用这些键的输入?
最佳答案
您可以覆盖Form.ProcessCmdKey
方法,以便能够处理用户的每次按键操作。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Down || keyData == Keys.Up)
{
// Process keys
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
返回
true
表示不应再执行任何进一步的处理,并且该键的默认行为不会产生任何影响。例如,您将不再能够使用TAB键在控件之间移动焦点,因此您可能应该只对仅由游戏处理的按键返回true。