2010-01-07 215 views
1

所以我想在菜單項(或按鈕)的快捷鍵上使用Ctrl加上一個數字。但似乎我無法與System.Windows.Forms.Shortcut如何在C#Windows窗體中使用數字鍵盤快捷鍵?

例如,要做到這一點: this.menuItem3.Shortcut = System.Windows.Forms.Shortcut.Alt7; 將工作的非數字鍵盤7號,但不能用於數字鍵盤7.我想指定使其作品在數字鍵盤上(我不在乎它是否適用於兩者)。

回答

1

在視覺設計器中,菜單項的屬性中有一個選項允許這樣做。

屬性是ShortcutKeys - 數字鍵盤鍵是下拉選項中的選項。

在代碼隱藏設計器生成:

this.myToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.NumPad0))); 

所以,你可以輕鬆地設置這個自己從你的代碼,如果你想要的。

有一點需要注意的是,這隻在Num Lock打開的時候才起作用 - 我很確定無法將兩個快捷鍵分配給同一個菜單項,所以如果你希望在Num Lock關閉以及然後您將需要處理按鍵事件。

This SO post covers你怎麼做到這一點。從帖子的代碼如下,使用插入指定的(因爲這是不Num Lock鍵,從上述匹配NUMPAD0

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == (Keys.Control | Keys.Insert)) 
    { 
     // Call your menu item handler here 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
+0

感謝您的答覆大衛 - 我很感激 這是什麼樣的。但我看起來並不是我可以的 我的房產是

System.Windows.Forms.Shortcut Shortcut
(如上),控制是System.Windows.Forms.MenuItem。 但是我已經能夠覆蓋
ProcessCmdKey
方法在你鏈接的帖子中顯示。這工作正常 - 雖然不完全是我想要的:D 謝謝! – 2010-01-07 08:16:21