【发布时间】: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