繁体   English   中英

覆盖某些关键事件的Windows Forms默认行为

[英]Overriding Windows Forms default behavior for some key events

我用一个简单的游戏创建了一个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。

重写窗体的OnKeyDown方法。 并且不要忘了最后调用base.OnKeyDown。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM