Catch/Handle 来自 Groupbox 内所有控件的按键事件
Catch/Handle Keydown Event From All Control Inside Groupbox
有没有办法使用一个事件处理程序从任何控件(例如组框内的文本框)捕获所有 keydown 事件。?
我尝试 groupbox_keydown,但没有触发。我尝试在 msdn 中进行一些研究,他们说 groupbox 无法获得焦点,因此永远不会引发 keydown 事件。有什么解决方法吗?
KeyPreview 已设置为 True。
编辑:
我在组框中有一些文本框。他们中的大多数都有默认值或预定义值。我想要的是当用户填写了所需的数据并想跳过一些文本框时,他只需要按 ctrl+enter 之类的键来执行单击该组框中的按钮或调用过程。
这似乎工作正常它循环访问组框中的控件集合并将 .KeyDown
事件添加到示例处理程序。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Each ctl As Control In GroupBox1.Controls
AddHandler ctl.KeyDown, AddressOf GroupBox1Controls_KeyDown
Next
End Sub
Private Sub GroupBox1Controls_KeyDown(sender As Object, e As KeyEventArgs)
MessageBox.Show(DirectCast(sender, Control).Name)
End Sub
可能有些控件没有 .KeyDown
事件,因此您可能想像这样在代码中添加一个空的 Try..Catch..End Try
块,但我不会推荐它,因为它可以隐藏代码的其他问题。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Each ctl As Control In GroupBox1.Controls
Try
AddHandler ctl.KeyDown, AddressOf GroupBox1Controls_KeyDown
Catch
End Try
Next
End Sub
有没有办法使用一个事件处理程序从任何控件(例如组框内的文本框)捕获所有 keydown 事件。? 我尝试 groupbox_keydown,但没有触发。我尝试在 msdn 中进行一些研究,他们说 groupbox 无法获得焦点,因此永远不会引发 keydown 事件。有什么解决方法吗? KeyPreview 已设置为 True。
编辑: 我在组框中有一些文本框。他们中的大多数都有默认值或预定义值。我想要的是当用户填写了所需的数据并想跳过一些文本框时,他只需要按 ctrl+enter 之类的键来执行单击该组框中的按钮或调用过程。
这似乎工作正常它循环访问组框中的控件集合并将 .KeyDown
事件添加到示例处理程序。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Each ctl As Control In GroupBox1.Controls
AddHandler ctl.KeyDown, AddressOf GroupBox1Controls_KeyDown
Next
End Sub
Private Sub GroupBox1Controls_KeyDown(sender As Object, e As KeyEventArgs)
MessageBox.Show(DirectCast(sender, Control).Name)
End Sub
可能有些控件没有 .KeyDown
事件,因此您可能想像这样在代码中添加一个空的 Try..Catch..End Try
块,但我不会推荐它,因为它可以隐藏代码的其他问题。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Each ctl As Control In GroupBox1.Controls
Try
AddHandler ctl.KeyDown, AddressOf GroupBox1Controls_KeyDown
Catch
End Try
Next
End Sub