2010-01-07 216 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