2009-09-01 36 views
2

我想使它无论哪个控件具有焦点,它都会执行我的事件。这样我就不必为我的所有对象编写一个keydown事件。这可能吗?对于整个应用程序的Keydown事件VB .Net

感谢

+0

注意,如果它通过表单的KeyPreview是不可能的,你可以简单地递归遍历窗体的控件,并在运行时指定一个事件的控件。只要它们具有相同的签名,事件就很容易重用。 – overslacked 2009-09-01 19:34:30

回答

4

你有你的窗体的KeyPreview属性设置为

当此属性设置为true, 形式将接收所有的按键响应, KeyDown和KEYUP事件。

1

我不是专家,但我相信这是可能的。我已经完成了之前我有一个事件处理程序处理多个按钮按下,然后根据哪个按钮具有焦点做不同的事情。

的代码是是这样的:

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 
相关问题