Dot-Net
Windows Forms .NET 中的熱鍵(非全域)
在我的 Windows 窗體應用程序中,我希望每次按下一個特殊按鈕來執行測試。有幾十個控制項,因此在每個控制項中實施它都需要太多時間。
有沒有辦法可以設置熱鍵,所以無論我在應用程序中做什麼,我都可以按下鍵,它會觸發我的事件?
ProcessCmdKey您可以在控制項或表單中覆蓋和處理您的熱鍵。來自MSDN:
ProcessCmdKey 方法首先確定控制項是否具有 ContextMenu,如果有,則啟用 ContextMenu 來處理命令鍵。如果命令鍵不是菜單快捷方式並且控制項具有父級,則該鍵將傳遞給父級的 ProcessCmdKey 方法。最終效果是命令鍵在控制層次結構中“冒泡”。除了使用者按下的鍵之外,鍵數據還指示與鍵同時按下的修飾鍵(如果有的話)。修飾鍵包括 SHIFT、CTRL 和 ALT 鍵。
例如:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { // if it is a hotkey, return true; otherwise, return false switch (keyData) { case Keys.Control | Keys.C: // do something return true; default: break; } return base.ProcessCmdKey(ref msg, keyData); }