【问题标题】:Keydown event for entire application VB .Net整个应用程序 VB .Net 的 Keydown 事件
【发布时间】:2012-01-15 17:28:10
【问题描述】:

我想让它无论哪个控件具有焦点,它都会执行我的事件。这样我就不必为我的所有 137 个对象编写 keydown 事件。这可能吗?

谢谢

【问题讨论】:

  • 请注意,如果无法通过表单的 KeyPreview 实现,您可以简单地递归循环表单的控件并在运行时将事件分配给控件。事件,只要它们具有相同的签名,就很容易被重用。

标签: .net vb.net winforms keydown


【解决方案1】:

您必须将表单的 KeyPreview 属性设置为 True

当此属性设置为 true 时, 表单将收到所有 KeyPress, KeyDown 和 KeyUp 事件。

【讨论】:

    【解决方案2】:

    我不是专家,但我相信这是可能的。我以前做过,我让一个事件处理程序处理多个按钮按下,然后根据哪个按钮有焦点做一些不同的事情。

    代码是这样的:

    For Each ctl in Me.Controls
    If ctl.Type is <whatever type of control you want to handle> And ctl.Isfocused Then
    Do whatever
    End If
    Next
    

    您无需担心此类事情的递归。

    如果您希望每个控件都执行相同的操作,则无论哪个控件具有焦点都会更容易。

    Private Sub keypresshandle (System arguments ignore this) Handles key1.press, key2.press etc .... key10000.press
    do some stuff here
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多