在不同的对象中使用不同的 KeyDown 事件,但在 vb.net 中使用相同的形式
Using different KeyDown events in different objects but in the same form in vb.net
我有 2 个按钮,形式为“button1”和“button2”,我的两个按钮都有以下代码:
Private Sub Button2_KeyDown(sender As Object, e As KeyEventArgs) Handles Button2.KeyDown
Select Case e.KeyData
Case (Keys.F5)
MsgBox("F5 in button 2")
Case (Keys.F6)
MsgBox("F6 in button 2")
End Select
End Sub
Private Sub Button1_KeyDown(sender As Object, e As KeyEventArgs) Handles Button1.KeyDown
If e.KeyCode.Equals(Keys.F9) Then
MsgBox("F9 in button 1")
End If
End Sub
使用此代码,我正在尝试以相同的形式从键盘上使用不同的键激活两个不同的按钮。
问题是当我尝试按下不同对象的不同键时,只有其中一个正在注册事件。
示例:默认情况下,我认为按钮 2 已激活,因此每次我按 f5 和 f6 时,正确的消息显示都没有问题,但是当按 f9 键时实际上并没有触发按钮 1 的其他事件。我必须单击按钮分别激活它们,然后事件正确注册。
是否可以同时激活它们?
您编写了 2 个不同的 KeyDown
事件,因此如果活动控件是 button2,F5 和 F6 将起作用。如果活动控件是 button1,F9 将。
将表单的 KeyPreview
属性 设置为 true
并为表单创建另一个 KeyDown 事件,如下所示:
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Form1.KeyDown
If e.KeyCode.Equals(Keys.F9) Then
Button1_KeyDown(Me, e)
End If
Select Case e.KeyData
Case (Keys.F5)
Button2_KeyDown(Me, e)
Case (Keys.F6)
Button2_KeyDown(Me, e)
End Select
End Sub
KeyPreview = True
KeyDown 仅适用于表单而不适用于按钮,您可以从那里调用所需的事件。
我有 2 个按钮,形式为“button1”和“button2”,我的两个按钮都有以下代码:
Private Sub Button2_KeyDown(sender As Object, e As KeyEventArgs) Handles Button2.KeyDown
Select Case e.KeyData
Case (Keys.F5)
MsgBox("F5 in button 2")
Case (Keys.F6)
MsgBox("F6 in button 2")
End Select
End Sub
Private Sub Button1_KeyDown(sender As Object, e As KeyEventArgs) Handles Button1.KeyDown
If e.KeyCode.Equals(Keys.F9) Then
MsgBox("F9 in button 1")
End If
End Sub
使用此代码,我正在尝试以相同的形式从键盘上使用不同的键激活两个不同的按钮。 问题是当我尝试按下不同对象的不同键时,只有其中一个正在注册事件。
示例:默认情况下,我认为按钮 2 已激活,因此每次我按 f5 和 f6 时,正确的消息显示都没有问题,但是当按 f9 键时实际上并没有触发按钮 1 的其他事件。我必须单击按钮分别激活它们,然后事件正确注册。
是否可以同时激活它们?
您编写了 2 个不同的 KeyDown
事件,因此如果活动控件是 button2,F5 和 F6 将起作用。如果活动控件是 button1,F9 将。
将表单的 KeyPreview
属性 设置为 true
并为表单创建另一个 KeyDown 事件,如下所示:
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Form1.KeyDown
If e.KeyCode.Equals(Keys.F9) Then
Button1_KeyDown(Me, e)
End If
Select Case e.KeyData
Case (Keys.F5)
Button2_KeyDown(Me, e)
Case (Keys.F6)
Button2_KeyDown(Me, e)
End Select
End Sub
KeyPreview = True
KeyDown 仅适用于表单而不适用于按钮,您可以从那里调用所需的事件。