【问题标题】:Keydown event when the form is not active表单不活动时的 Keydown 事件
【发布时间】:2011-07-14 02:38:44
【问题描述】:

如何捕获非活动表单的 Keydown 事件?

我找到了对 ProcessKeyDown 的引用,但我找不到任何帮助。

【问题讨论】:

    标签: c# winforms desktop-application


    【解决方案1】:

    请将表单的 KeyPreview 设置为 true。首先选择表单并按f4键,它将打开属性窗口,它们是KeyPreview并将其设置为true。

    【讨论】:

      【解决方案2】:

      在form和cilck属性上右键cilck,就会出现flash button,它是针对那个对象的事件。找到他们的 Keypress 事件。只需双击与该事件对应的列。它将为按键创建事件。

      有关文档和帮助,请查看this 链接。

      【讨论】:

      • 先生,我不想要这个。我知道.. 但是如果我的表单没有激活,它就不会运行。
      【解决方案3】:

      按键事件仅发送到具有输入焦点的控件。您可以使用 Control.HasFocus 属性来确定您的 Control 是否具有焦点。使用 Control.Focus() 方法为您的控件提供焦点。

      【讨论】:

        【解决方案4】:

        您可以使用SetWindowsHookEx() 设置低级键盘挂钩来监听按键事件。

        【讨论】:

        【解决方案5】:

        如果您想做的是在操作系统中按下按键时触发程序中的一些代码,以了解表单是否处于活动状态,那么您可以使用本文中描述的方法:

        Processing Global Mouse and Keyboard Hooks in C#

        这是一个简单的程序示例,该程序使用该库通过按小键盘上的数字键来模拟虚拟鼠标。 '1'-'4'和'6'-'9'是方向键,'5'是左键,'0'是双击。

        Program.cs

        Form1.cs

        注意我没有调用 Application.Run();使用新的 Form1() 参数,以便应用程序可以运行但不会在屏幕上显示。要结束程序,您必须按 CTRL+SHIFT+ESC,转到进程页面并手动结束进程。

        【讨论】:

          猜你喜欢
          • 2023-03-27
          • 2011-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-15
          • 2010-11-20
          • 1970-01-01
          相关资源
          最近更新 更多