【问题标题】:WinForms - Capture key up before controlWinForms - 在控制之前捕获键
【发布时间】:2011-04-21 18:48:38
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: c# winforms controls capture


    【解决方案1】:

    将表单的 KeyPreview 属性设置为 true 对您有用吗?

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我试图阻止某些箭头键通过,而覆盖 ProcessCmdKey 是我的答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多