按键在表单上的任意位置

Bla*_*azE 3 c# keydown winforms

无论焦点在哪里(只要他们正在使用应用程序),我如何确定用户按下了什么键?

例如,他们按“ CTRL+ Q”(退出),程序无论如何都会退出。

通常我必须转到 KeyDown 的表单事件,并在那里设置该条件。但是如果表单没有被聚焦呢?那么CTRL+Q就行不通了。

如何在 Windows 窗体应用程序中执行此操作?我确定这很简单,但找不到方法。

Blo*_*ard 7

你的问题不清楚 - 但给出了这个报价:

无论焦点在哪里(只要他们正在使用应用程序),我如何确定用户按下了什么键?

我将假设您不是在寻找系统全局热键,而只是在寻找应用程序全局热键。

如果您只有一个表单,则只需将表单的KeyPreview属性设置为 true。

这具有首先将所有按键事件(KeyDown 等)发送到窗体的效果,即使窗体上的控件具有焦点。

然后您可以简单地实现您在问题中提到的 KeyDown 处理程序。

如果您有多个表单,那么您可能需要对每个表单都执行此操作。


Use*_*678 4

您所描述的通常称为系统范围的热键

Windows 窗体本身并不支持系统范围的热键,这意味着您需要通过本机函数手动注册和管理每个系统范围的热键RegisterHotkey,或者使用第三方库(例如Shortcut )

如果您选择手动注册和管理每个系统范围的热键, 这里的一篇文章这里的截屏视频应该会对您有所帮助。

(全面披露:快捷方式是我的一个项目,截屏视频也是)。