2014-12-01 92 views
1

我有一个奇怪的问题。我有一个toolStripMenuItem,我希望首字母加下划线。这是在Windows窗体VS 2010中。 它在设计器中用等于“&展开”的文本定义并显示快捷键= true和快捷键= Alt + E。它在设计师的表格中以预期的形式出现,E标出。 我有一个点击事件,改变名称,然后做一些事情。如果再次单击它设置名称后面ToolStripMenuItem快捷键不要用鼠标点击线条

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; 
     } 
    } 

我还设置了&展开的形式显示和负载事件虽然这没什么区别。 现在当表格打开时,E不加下划线。如果我用鼠标单击它,它会显示“折叠”,但e不加下划线。我可以用鼠标来回移动,字母也不会加下划线。但是,如果我输入AltE,则从这一点起,这两封信中都会加下划线。即使用鼠标。 有什么建议吗? 谢谢

+0

'expandToolStripMenuItem_Click'您是否使用设计器自动创建此事件..?或者你是否手动键入它..如果你手动输入它..我会检查设计器中的事件,以确保MenuStrip项目,并确保它被分配到适当的事件第一.. – MethodMan 2014-12-01 16:55:29

+1

我想说这是预期的功能。在Visual Studio中,它的行为方式相同。打开记事本并单击“文件”菜单,注意没有任何快捷键字母带下划线。如果按Alt + F,则所有文件菜单项都会以其快捷键字母加下划线显示。 – Anthony 2014-12-01 17:14:23

+0

还有一点需要注意的是,在[DropDownOpening](http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripdropdownitem.dropdownopening.aspx)事件中放置此功能可能更好,因此无论是通过单击还是通过通过快捷键选择的父菜单项打开下拉菜单,都会触发。 – Anthony 2014-12-01 17:16:42

回答

0

我的评论后,我看起来更深一层。这是预期的功能,并且是configurable by the user

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

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

+0

哇,你是对的。似乎有点短视。网这么做没有?我的意思是如果我明确地定义它,那么它应该显示正确?感谢所有的答案。汤姆 – Tom 2014-12-01 22:49:43

+0

不知道它的近视,如果你考虑它是有道理的。如果我用鼠标打开菜单项,我可能不关心访问键 - 我已经在使用鼠标。当我明显不使用它们时添加一串下划线会增加不必要的混乱。 – Anthony 2014-12-02 13:42:04