【发布时间】:2012-01-15 17:28:10
【问题描述】:
我想让它无论哪个控件具有焦点,它都会执行我的事件。这样我就不必为我的所有 137 个对象编写 keydown 事件。这可能吗?
谢谢
【问题讨论】:
-
请注意,如果无法通过表单的 KeyPreview 实现,您可以简单地递归循环表单的控件并在运行时将事件分配给控件。事件,只要它们具有相同的签名,就很容易被重用。
标签: .net vb.net winforms keydown
我想让它无论哪个控件具有焦点,它都会执行我的事件。这样我就不必为我的所有 137 个对象编写 keydown 事件。这可能吗?
谢谢
【问题讨论】:
标签: .net vb.net winforms keydown
您必须将表单的 KeyPreview 属性设置为 True。
当此属性设置为 true 时, 表单将收到所有 KeyPress, KeyDown 和 KeyUp 事件。
【讨论】:
我不是专家,但我相信这是可能的。我以前做过,我让一个事件处理程序处理多个按钮按下,然后根据哪个按钮有焦点做一些不同的事情。
代码是这样的:
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
【讨论】: