keydown 不使用按钮在 Enter 键上触发
keydown not firing on Enter key using button
我正在创建一个 winforms 应用程序,我只是想使用一个按钮来允许用户提交表单。我有以下按钮代码
With duplicate_button
.Parent = action_box
.TabIndex = 4
.Width = 125
.Top = 25
.Left = (.Parent.Width / 2) - (.Width / 2)
AddHandler .KeyDown, AddressOf duplicate
End With
Private Sub duplicate(sender As Object, e As KeyEventArgs)
Console.Write(e.KeyCode)
End Sub
但是,当用户按下回车键时,复制函数不会被调用。它确实会被键盘上的任何其他键调用,而不是回车键。但我真的只需要它为回车键工作。
我已经尝试将 previewkeys 设置为 true 并将表单上的 acceptbutton 设置为此按钮,但它们都没有改变任何东西。
我也试过使用按键事件,但还是没有检测到回车键。
当按钮获得焦点时,按 ENTER 键将引发 Click
和 KeyUp
事件。
TAB 键将引发 KeyUp 事件,如果按下该键将导致焦点到达按钮,但如果按下该键将焦点移动到另一个控件则不会。
如果按下 Shift+TAB 将焦点移动到 Button
,则会引发两次 KeyUp
事件。
KeyDown
事件仅在按下 Shift+TAB 键将 Focus 移动到 [=15 中的上一个控件时引发=]订单。
当按钮具有焦点时按下任何其他键,将引发 KeyUp
和 KeyDown
事件。
表单的 KeyPreview
属性 不会更改此行为。
Shift+TAB 键除外,用于将焦点移动到上一个控件时。
在这种情况下,只会引发 KeyDown
事件。
如果按钮是表单的 AcceptButton or the CancelButton,按 ENTER 或 ESC 键将提高 Click
按钮的事件。
如果还存在多行 TextBox
控件,这可能会导致问题,因为按 ENTER 键不会生成新行,因为不会引发 KeyDown
事件对于此密钥,仅 KeyUp
.
我正在创建一个 winforms 应用程序,我只是想使用一个按钮来允许用户提交表单。我有以下按钮代码
With duplicate_button
.Parent = action_box
.TabIndex = 4
.Width = 125
.Top = 25
.Left = (.Parent.Width / 2) - (.Width / 2)
AddHandler .KeyDown, AddressOf duplicate
End With
Private Sub duplicate(sender As Object, e As KeyEventArgs)
Console.Write(e.KeyCode)
End Sub
但是,当用户按下回车键时,复制函数不会被调用。它确实会被键盘上的任何其他键调用,而不是回车键。但我真的只需要它为回车键工作。
我已经尝试将 previewkeys 设置为 true 并将表单上的 acceptbutton 设置为此按钮,但它们都没有改变任何东西。
我也试过使用按键事件,但还是没有检测到回车键。
当按钮获得焦点时,按 ENTER 键将引发 Click
和 KeyUp
事件。
TAB 键将引发 KeyUp 事件,如果按下该键将导致焦点到达按钮,但如果按下该键将焦点移动到另一个控件则不会。
如果按下 Shift+TAB 将焦点移动到 Button
,则会引发两次 KeyUp
事件。
KeyDown
事件仅在按下 Shift+TAB 键将 Focus 移动到 [=15 中的上一个控件时引发=]订单。
当按钮具有焦点时按下任何其他键,将引发 KeyUp
和 KeyDown
事件。
表单的 KeyPreview
属性 不会更改此行为。
Shift+TAB 键除外,用于将焦点移动到上一个控件时。
在这种情况下,只会引发 KeyDown
事件。
如果按钮是表单的 AcceptButton or the CancelButton,按 ENTER 或 ESC 键将提高 Click
按钮的事件。
如果还存在多行 TextBox
控件,这可能会导致问题,因为按 ENTER 键不会生成新行,因为不会引发 KeyDown
事件对于此密钥,仅 KeyUp
.