我尝试为我的按钮创建键盘快捷键。
这是我的代码
Private Sub form_main_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If Keys.ControlKey + Keys.N Then
'btn_add.PerformClick()
addentry()
ElseIf Keys.ControlKey + Keys.E Then
'btn_edit.PerformClick()
editentry()
End If
End Sub
问题是即使我按下其他按钮仍然会调用该功能。我也尝试使用表单keydown
属性,但结果仍然相同。
其他信息:
addentry
和editentry
只会调用form_addedit
btn_add
将致电addentry
btn_edit
将致电editentry
答案 0 :(得分:2)
首先,Keys.***
只是一个枚举。其中的每个条目只是一个代表密钥代码的数字。所以你现在只是在一起添加数字。
Keys.ControlKey
为17,Keys.N
为78,所以你写的是:
If 17 + 78 Then
总是返回True
,因为它大于0。
要执行您的要求,您必须通过检查传递给事件的事件参数(EventArgs)来检查按下了哪个键。
但是,由于您使用的是KeyPress
事件,因此无法从事件参数中获取密钥枚举,因此我建议您改为使用KeyDown
事件。
Private Sub form_main_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.Control = True AndAlso e.KeyCode = Keys.N Then
addentry()
ElseIf e.Control = True AndAlso e.KeyCode = Keys.E Then
editentry()
End If
End Sub
答案 1 :(得分:1)
如果您在按钮的.Text属性中放置&符号,Alt +键将触发按钮,例如 B& utton1 将使用Alt + u激活。