WinForms - 在控制之前捕获密钥

时间:2011-04-21 18:48:38

标签: c# winforms controls capture

我有一个表单并且正在订阅KeyUp事件并处理ALT键,这很有效但只有当我的表单具有焦点时,如果表单上的控件具有焦点,那么这不再起作用;当控件有焦点时,我可以使用什么来捕获键?我宁愿不必订阅表单控件上的每个KeyUp事件......

感谢。

2 个答案:

答案 0 :(得分:4)

将表单的 KeyPreview 属性设置为true是否适用于您?

答案 1 :(得分:2)

尝试从表单中覆盖 ProcessCmdKey 。只要表单处于活动状态,无论哪个控件具有焦点,都会引发此问题。你将不得不做更多的工作检查keydata。例如:

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if ((keyData & Keys.Alt) == Keys.Alt)
        {
            Debug.WriteLine("ALT");
        }

        return base.ProcessCmdKey(ref msg, keyData);
    }