【问题标题】:Setting the Windows Forms ToolStripMenuItem ShortcutKeys property to numpad key does not work将 Windows 窗体 ToolStripMenuItem ShortcutKeys 属性设置为数字键盘键不起作用
【发布时间】:2010-04-25 16:23:37
【问题描述】:

我们能够为 Windows 窗体应用程序菜单项定义快捷键。这样我可以告诉一个菜单项 File->Save 有快捷键 Ctrl + S 并且菜单项的处理程序是“神奇的”按 Ctrl + S 后执行。

问题在于数字键盘键,ShortcutKey 属性不接受它们(我不明白它们与其他可接受的键有何不同)。

MSDN 声明该属性接受类型 System.Windows.Forms.Keys(其中一个 Keys 值。默认值为 None。);当参数不是 Keys 值之一时,将抛出 InvalidEnumArgumentException。但是例如 Keys.Divide IS 是 Keys 值之一,但它不能使用。

那么,如何设置菜单项以拥有 Numpad * 或 Numpad + 的快捷方式?我需要处理 Form 的 ProcessCmdKey 事件中的键吗?

【问题讨论】:

    标签: c# winforms keyboard-shortcuts


    【解决方案1】:

    您必须在快捷方式中使用 CtrlAlt

    示例:

    //working:  
    toolStripMenuItem1.ShortcutKeys = Keys.Control | Keys.NumPad0;  
    //throws exception  
    toolStripMenuItem1.ShortcutKeys = Keys.NumPad0;  
    

    【讨论】:

    • 这是有道理的,我仔细想想。
    【解决方案2】:

    回答关于使用小键盘*和小键盘+的问题:

    • 小键盘* 被称为乘法键。枚举名称为Multiply

    • 小键盘+ 被称为添加键。枚举名称为Add

    • 小键盘- 被称为减法键。枚举名称为Subtract

    在Visual Studio的属性窗口中不能选择这些(至少在Visual Studio 2008中不能),但是可以编辑对应的源代码;其中属性ShortcutKeys 已设置。例如,对于名为 mnuMoreTime 的菜单项,小键盘 +

    this.mnuMoreTime.ShortcutKeys = 
        ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
                                      System.Windows.Forms.Keys.Add)));
    

    【讨论】:

      猜你喜欢
      • 2011-05-26
      • 2021-05-07
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多