快捷鍵我想通過我的特定程序的快捷方式定義運行特定的代碼。例如,如果我點擊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