控件MenuStrip和ContextMenuStrip可通過ShortCcutKeys屬性設置快捷鍵,而控件Button沒有ShortcutKey屬性,如何為控件Button設置快捷鍵呢(組合件鍵)?
1)使用&符號定義<Alt>鍵,比如:button1.Text=保存(&S),鍵盤按 Alt+S 相當於點擊了button1按鈕。
2)通過重寫ProcessCmdKey(ref Message msg, Keys keyData)或ProcessDialogKey(Keys keyData)的方法來允許對窗體鍵盤消息重新處理。
假設有名為button1的Button按鈕:
//處理命令鍵 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { //假如鍵入Shift+D if (keyData == (Keys.Shift | Keys.D)) { this.button1.PerformClick();//模擬鼠標單擊按鈕,生成按鈕的單擊事件 return true;//返回true,不再繼續處理 } return base.ProcessCmdKey(ref msg, keyData); } //處理對話框鍵 protected override bool ProcessDialogKey(Keys keyData) { //假如鍵入Ctrol+Shift+D if (keyData == (Keys.Control | Keys.Shift | Keys.D)) { this.button1.PerformClick();//模擬鼠標單擊按鈕,生成按鈕的單擊事件 return true;//返回true,不再繼續處理 } return base.ProcessDialogKey(keyData); }
3)設置窗體 KeyPreview 屬性為 True,編寫 KeyDown 事件。
假設有名為button1的Button按鈕:
private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e.KeyCode == Keys.Enter) { this.button1.PerformClick(); e.Handled = true; } }