C# 有没有办法检查Windows窗体中任何位置按下的键?

C# 有没有办法检查Windows窗体中任何位置按下的键?,c#,C#,有没有办法检查Windows窗体中任何位置按下的键? 我已尝试使用事件(键控)进行设置 但是我想知道有没有什么简单的方法可以检查Windows窗体的任何位置按下了哪些键? 创建所有对象事件(KeyDown)需要时间。创建一个静态类怎么样,例如-KeyboardHelper 在该类中创建一个事件处理程序 public KeyPressed(object sender, arguments) { } 在每个表单/控件等中,构造函数执行以下操作: this.KeyDown += KeyboardHe

有没有办法检查Windows窗体中任何位置按下的键?
我已尝试使用事件(键控)进行设置

但是我想知道有没有什么简单的方法可以检查Windows窗体的任何位置按下了哪些键?

创建所有对象事件(KeyDown)需要时间。

创建一个静态类怎么样,例如-KeyboardHelper

在该类中创建一个事件处理程序

public KeyPressed(object sender, arguments)
{
}
在每个表单/控件等中,构造函数执行以下操作:

this.KeyDown += KeyboardHelper.KeyPressed;
您的所有事件都将下沉到一个函数中—在键盘管理器类中


您还可以研究事件冒泡和隧道,以及它在C#中的表现。

您应该研究覆盖。在我看来,这比在表单上设置KeyPreview要好,而且肯定比为每个控件设置处理程序要好

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    switch (keyData)
    {
        case /* whatever key combination */:
        // do something
        default:
            return base.ProcessCmdKey(ref msg, keyData);
    }

    return true;
}

WinForms?WPF?还有别的吗?为您的UI框架添加适当的标记。请检查此项
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    switch (keyData)
    {
        case /* whatever key combination */:
        // do something
        default:
            return base.ProcessCmdKey(ref msg, keyData);
    }

    return true;
}