2011-02-19 92 views

回答

36

​​

創建用於KeyDown事件的處理程序:

myForm.KeyDown += new KeyEventHandler(Form_KeyDown); 

處理器示例:

// Hot keys handler 
    void Form_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Control && e.KeyCode == Keys.S)  // Ctrl-S Save 
     { 
      // Do what you want here 
      e.SuppressKeyPress = true; // Stops other controls on the form receiving event. 
     } 
    } 
0

首先,你需要處理KeyDown事件,然後就可以開始觀看了您的修飾符:

private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
{ 
    if (Control.ModifierKeys == Keys.Control && e.KeyCode == Keys.S) 
    { 
     //Do whatever 
    } 
} 

當然,你需要確保你的形式訂閱KeyDown事件。

2

我想一個KeyDown活動的形式和一些像這樣的代碼:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyData == (Keys.Control | Keys.N)) 
    { 
     CreateNew(); 
    } 
} 
+1

任何人都可以告訴我這是什麼CreateNew()?它是一個內置函數嗎? – Riya 2011-02-19 05:01:41

+0

@ riya7887:這只是一個例子。這不是一種內置的方法。你可以創建這樣的方法,並把所有相關的代碼放入。 – 2011-02-19 06:16:49

2

如果您嘗試將它們鏈接到應用程序中的菜單項,則不需要任何代碼。在菜單項上,您可以簡單地設置快捷鍵屬性,它將運行您爲菜單項單擊配置的相同事件。

0

如果需要,也可以使用隱藏菜單進行設置。只需設置menu.visible = false的屬性;

2

您還可以覆蓋在你的Form派生類型ProcessCmdKey這樣的:

protected override bool ProcessCmdKey(ref Message message, Keys keys) 
{ 
    switch (keys) 
    { 
     case Keys.B | Keys.Control | Keys.Alt | Keys.Shift: 
      // ... Process Shift+Ctrl+Alt+B ... 

      return true; // signal that we've processed this key 
    } 

    // run base implementation 
    return base.ProcessCmdKey(ref message, keys); 
} 

我認爲這是比較適合的熱鍵。沒有KeyPreview需要。

3

如果你的窗口有一個菜單,你可以使用的System.Windows.Forms.ToolStripMenuItemShortcutKeys屬性:

myMenuItem.ShortcutKeys = Keys.Control | Keys.S; 

在Visual Studio中,你可以將它設置菜單項的屬性頁,太多。