我有一個帶有幾個控件的窗體。我想在keydown事件上運行一個特定的子節點,而不管任何控件事件。 我的意思是如果用戶在窗體上的任何地方按Ctrl + S它執行子例程。vb.net整個表單上的Keydown事件
10
A
回答
17
您應該設置形式爲True上KeyPreview性質和處理存在的keydown事件
當此屬性設置爲true,窗體將接收所有按鍵響應, KeyDown和KEYUP事件。在窗體的事件處理程序完成處理擊鍵後,該擊鍵被分配給 焦點控件。 ..........要僅在表單級別處理鍵盤 事件並且不允許控件接收 鍵盤事件,請將您的 表單的KeyPress事件處理函數中的KeyPressEventArgs.Handled屬性設置爲true。
例如,要處理Control + S組合鍵,您可以爲窗體KeyDown事件編寫此事件處理程序。
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
If e.Control AndAlso e.KeyCode = Keys.S then
' Call your sub method here .....
YourSubToCall()
' then prevent the key to reach the current control
e.Handled = False
End If
End Sub
1
我在之前的表單中使用過這段代碼,它似乎工作得很好。
Protected Overrides Function ProcessKeyPreview(ByRef m As System.Windows.Forms.Message) As Boolean
If m.Msg = &H100 Then 'WM_KEYDOWN
Dim key As Keys = m.WParam
If key = Keys.S And My.Computer.Keyboard.CtrlKeyDown Then
'DO stuff
Return True
End If
End If
Return MyBase.ProcessKeyPreview(m)
End Function
相關問題
- 1. 在單個keydown上觸發不需要的多個KeyDown事件
- 2. Keydown事件vb.net無法響應?
- 3. VB.NET文本框keydown事件不觸發
- 4. keydown事件上的鍵碼
- 5. KeyDown事件上的PrintScreen鍵
- 6. 表單不活動時Keydown事件
- 7. C#試圖捕獲表單上的KeyDown事件
- 8. 在所有表單上使用KeyDown事件更改語言
- 9. mac swift多個keyDown事件
- 10. ASPxTextBox KeyDown事件
- 11. jQuery keydown事件
- 12. keydown事件:與「@」
- 13. Keydown事件Javascript?
- 14. 在keydown事件
- 15. DataGridView KeyDown事件
- 16. 事件vb.net中的表單順序
- 17. onChange事件影響到整個表單
- 18. 對於整個應用程序的Keydown事件VB .Net
- 19. iOS上的KeyDown事件,2和@
- 20. 在keydown事件上的opera preventDefault()
- 21. 整個表單上的JQuery:.focus()事件?如何?
- 22. vb.net中的表單關閉事件中的事件序列
- 23. WebBrowser「竊取」我的表單中的KeyDown事件
- 24. Keydown標籤事件
- 25. Keydown事件 - 降溫
- 26. KeyDown和KeyUp事件
- 27. KeyDown事件和drag'n'drop
- 28. Silverlight Smooth KeyDown事件
- 29. keydown事件代碼
- 30. 模擬keydown事件
謝謝史蒂夫...非常有幫助 – Malik