我想通过为我的特定程序定义的快捷方式运行特定代码。例如,如果我单击 F1 或 Ctrl + C ,那么我希望我的程序显示客户列表。我已经尝试了使用以下代码
的form的keydown事件If e.KeyCode = Keys.F1 Then
Form6.button4.performclick()
End If
但这似乎不起作用。任何人都可以帮助我吗?
我在visual studio 2005中使用vb.net来开发我的应用程序
答案 0 :(得分:4)
试试这个:
Private Sub frmCustomerDetails_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' When the form loads, the KeyPreview property is set to True.
' This lets the form capture keyboard events before
' any other element in the form.
Me.KeyPreview = True
End Sub
Private Sub frmCustomerDetails_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If (e.Alt AndAlso (e.KeyCode = Keys.P)) Then
' When Alt + P is pressed, the Click event for the print
' button is raised.
RaiseEvent btnPrintCustomerDetails.Click
End If
End Sub
虽然,你最好创建自己的事件并提高它,而不是提升按钮的点击事件。
答案 1 :(得分:2)
“访问键是菜单,菜单项或控件(如按钮)标签中带下划线的字符。使用访问键,用户可以通过按ALT键”单击“按钮结合预定义的访问键。例如,如果一个按钮运行一个打印表单的过程,因此其Text属性设置为“Print”,在字母“P”之前添加一个&符号会导致字母“P”在运行时在按钮文本中加下划线。用户可以通过按ALT + P来运行与按钮关联的命令。对于无法获得焦点的控件,您不能拥有访问键。“
尝试访问密钥?
答案 2 :(得分:1)
答案 3 :(得分:1)
这是一种非常简单的方法:
Private Sub RichTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyPress
If Keys.T + Keys.ControlKey Then
TextBox1.Text = RichTextBox1.SelectedText
End If
End Sub
这是从2010年开始的。
答案 4 :(得分:0)
我更喜欢通过为快捷方式添加菜单,为每个快捷方式添加菜单项,然后将快捷方式绑定到菜单项来实现快捷方式。这很好,因为它记录了可用的快捷方式,使编码变得非常简单。
答案 5 :(得分:0)
您的代码是正确的,但您应在表单中设置keyPreview = true
答案 6 :(得分:0)
我看到了列出的答案,这很老了,但试试这个。如图所示,热键设置为alt + d或alt + c。他们给你的东西和我给你的东西之间的代码差异在于,即使应用程序被最小化,它也能正常工作。
Public Const MOD_ALT As Integer = &H1 'Alt key
Public Const WM_HOTKEY As Integer = &H312 '
<DllImport("User32.dll")> _
Public Shared Function RegisterHotKey(ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer
End Function
<DllImport("User32.dll")> _
Public Shared Function UnregisterHotKey(ByVal hwnd As IntPtr, ByVal id As Integer) As Integer
End Function
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = WM_HOTKEY Then
Dim id As IntPtr = m.WParam
Select Case (id.ToString)
Case "100"
MessageBox.Show("You pressed ALT+D key combination")
Case "200"
MessageBox.Show("You pressed ALT+C key combination")
End Select
End If
MyBase.WndProc(m)
End Sub
Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
UnregisterHotKey(Me.Handle, 100)
UnregisterHotKey(Me.Handle, 200)
End Sub
Private Sub Form_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
RegisterHotKey(Me.Handle, 100, MOD_ALT, Keys.D)
RegisterHotKey(Me.Handle, 200, MOD_ALT, Keys.C)
end sub
答案 7 :(得分:0)
我遇到了相同的情况,我使用了menustrip和asigned shortkeys并使用了performclick函数并将menustrip的属性设置为可见false并且工作正常。