【问题标题】:ToolStripMenuItem shortcut keys do not ender line with mouse clickToolStripMenuItem 快捷键不会通过鼠标单击结束行
【发布时间】:2014-12-02 01:27:30
【问题描述】:

我有一个奇怪的问题。我有一个 toolStripMenuItem,我希望第一个字母加下划线。这是在 Windows 窗体 VS 2010 中。 它在设计器中定义为文本等于“&Expand”并显示快捷键 = true 和快捷键 = Alt+E。它按预期以设计器的形式显示,带有下划线的 E。 我有一个更改名称的单击事件,然后执行某些操作。如果您再次单击,它会重新设置名称

    private void expandToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (expandToolStripMenuItem.Text == "&Expand")
        {
            expandToolStripMenuItem.Text = "Collaps&e";
            expandToolStripMenuItem.ShortcutKeys = Keys.Alt | Keys.E;
            // execute some other code
        }

        else
        {
            expandToolStripMenuItem.Text = "&Expand";
            expandToolStripMenuItem.ShortcutKeys = Keys.Alt | Keys.E;
         }
    }

我还在显示的表单中设置 &Expand 并加载事件,尽管这没有区别。 现在,当表单打开时,E 没有下划线。如果我用鼠标单击它,它会显示 Collapse 但 e 没有下划线。我可以用鼠标来回移动,字母从不加下划线。但是,如果我键入 AltE,则从那时起,这两种情况下的字母都会加下划线。即使用鼠标。 有任何想法吗? 谢谢

【问题讨论】:

  • expandToolStripMenuItem_Click 您是否使用设计器自动创建此事件..?还是您手动输入...如果您手动输入...我会在设计器中检查 MenuStrip 项的事件,并确保首先将其分配给正确的事件..
  • 我想说这是预期的功能。在 Visual Studio 中,它的行为方式相同。打开记事本并单击“文件”菜单,注意没有任何快捷键字母带有下划线。如果您按 Alt+F,则所有文件菜单项都显示为带有下划线的快捷键字母。
  • 还有一点需要注意的是,最好将此功能放在DropDownOpening 事件中,以便无论是通过单击还是通过选择父菜单项打开下拉菜单都会触发它通过快捷键。

标签: c# winforms keyboard-shortcuts


【解决方案1】:

发表评论后,我看起来更深入了。这是预期的功能,是configurable by the user

在“轻松访问中心”的 Windows 控制面板中,“使键盘更易于使用”部分中有一个选项,名为“使键盘快捷键更易于使用:在键盘快捷键和访问键下划线”。如果未选中该复选框,则系统只会在用户已经使用访问键导航(使用 Alt)时为访问键(您正在处理的快捷方式下划线的正确名称)添加下划线。如果复选框被选中,那么它们将始终带有下划线。

您可以在 Windows 中的几乎任何应用程序中使用文件菜单对此进行测试。

【讨论】:

  • 哇,你是对的。似乎有点短视了。净这样做不行吗?我的意思是,如果我明确定义它,那么它应该显示正确吗?感谢所有的答案。汤姆
  • 不确定是不是短视的,仔细想想还是有道理的。如果我用鼠标打开一个菜单项,我可能不关心访问键——我已经在使用鼠标了。当我显然不使用它们时添加一堆下划线会增加不必要的混乱。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
  • 2021-02-26
相关资源
最近更新 更多