【问题标题】:Customizing menu shortcut keys自定义菜单快捷键
【发布时间】:2012-12-15 19:02:39
【问题描述】:

我正在开发一个顶部有菜单的应用程序。我想对快捷键使用不同的方法(这个 sn-p):这是快捷键:CTRL + N, 1

bool prefixSeen = false;

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (prefixSeen)
    {
        switch (keyData)
        {
            case (Keys.Control | Keys.D1):
                MessageBox.Show("New file");
                prefixSeen = false;
                break;
        }
    }
    switch (keyData)
    {
        case (Keys.Control | Keys.n):
            prefixSeen = true;
        break;
    }

    return base.ProcessCmdKey(ref msg, keyData);
}

代码取自here

这是我的菜单:

并且我希望在菜单项中显示(在右侧对齐)快捷键(我认为应该将其解释为字符串)。怎样才能达到这个效果?

提前致谢,祝大家新年快乐。

编辑:Visual Studio 的内置方法是:

【问题讨论】:

  • I want to use a different method for shortcut keys - 这是内置的(参见 Mark Hall 的回答)。为什么要使用不同的方法?
  • @JonB,看看我的编辑(在我的 sn-p),看看为什么我要使用自定义快捷键监听器。
  • 即使在被明确指出给你之后,你仍然违反了归属规则。 stackoverflow.com/questions/13459248/visual-studio-shortcutkeys
  • @HansPassant,这是我自己的问题。

标签: c# string menu keyboard-shortcuts customization


【解决方案1】:

使用MenuItem.ShortCutMenuItem.ShowShortCut 属性。


如果您想创建自己的自定义快捷键,这些属性将不适合您,因为它们依赖于预先确定的快捷键枚举。在这种情况下,我建议您将其添加到菜单的文本中,没有自动的方法。


既然有人指出您正在使用ToolStripMenuItems,您应该能够独立地将ShortCutKeyDisplayString 设置为您希望的任何内容。您仍然需要自己处理实际的快捷方式。

【讨论】:

  • 但是如何自定义 Menu 控件来实现呢?
  • @Victor 你使用的是 MenuItems 还是 toolStripMenuItems?
  • 我正在使用 toolStripMenuItems
猜你喜欢
  • 2012-08-28
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多