快捷键我想通过我的特定程序的快捷方式定义运行特定的代码。例如,如果我点击F1或Ctrl + C然后我想让我的程序显示客户列表。我已经尝试过下面的代码形式的keydown事件如何在vb.net
If e.KeyCode = Keys.F1 Then
Form6.button4.performclick()
End If
但这似乎不工作。任何人都可以帮助我吗?
我使用Visual Studio 2005中vb.net开发我的应用程序
快捷键我想通过我的特定程序的快捷方式定义运行特定的代码。例如,如果我点击F1或Ctrl + C然后我想让我的程序显示客户列表。我已经尝试过下面的代码形式的keydown事件如何在vb.net
If e.KeyCode = Keys.F1 Then
Form6.button4.performclick()
End If
但这似乎不工作。任何人都可以帮助我吗?
我使用Visual Studio 2005中vb.net开发我的应用程序
内容应该放在你的答案中,因为链接往往会死亡。 – mbomb007 2016-06-02 18:55:53
我更喜欢通过添加快捷方式菜单来实现快捷方式,添加菜单项的每个快捷方式,然后在快捷方式绑定到菜单项。这很好,因为它记录了可用的快捷方式,并使编码变得非常简单。
“访问键是在一个菜单,菜单项或控制的,如按钮标签的文本中带下划线的字符。访问键,用户可以‘按ALT点击’按钮与所述预定义的访问键组合键。例如,如果一个按钮运行一个过程来打印形式,因此,其文本属性被设置为“打印”的字母之前加入一个与符号“P”使字母“P”在运行时在按钮文本中加下划线,用户可以通过按ALT + P运行与该按钮相关的命令,对于无法获得焦点的控件,您不能拥有访问键。
尝试访问键?
你的代码是正确的,但你应该设置keyPreview = true
在表单
试试这个:
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
虽然,你最好能够创建自己的事件,并提高该而不是提高按钮的点击事件。
我看到的答案上市,这是很老,但尝试。如图所示,热键被设置为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
这是一个非常简单的方式做这样的事情:
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年虽然。
我遇到过相同的情况,我使用menustrip和签名shortkeys并使用performclick函数并将menustrip的属性设置为可见false,并且它工作正常。
您的命名是可怕的。人们应该怎么知道#6表单#6的按钮? – 2012-02-13 19:54:05
在Windows中保留'F1'来寻求帮助。 “Ctrl + C”通常用于“剪贴板复制”。这些特定的关键选择可能是一个坏主意。 – 2012-02-13 19:56:59
我也尝试过其他按键,比如'O'或'F4',但这也不起作用...Form6是查看客户和按钮的表单4点击事件包含打印客户列表的代码 – user944591 2012-02-13 20:06:37