使用&并按下ALT键时,MainMenu控件未显示下划线

4
我正在使用一个MainMenu控件(不是MenuStrip)在WinForm中。在设计视图中,我可以在文本字段中放置“&”,它会显示下划线,但当程序运行并按下ALT时,它并不会出现。
另外,由于某种原因,“&”字符实际上在顶层使用时被绘制(例如&File)。
有人之前遇到过这个问题并解决了吗?我已经搜索过了,除了自己绘制之外没有找到解决方案,但这似乎是应该能够解决的问题,因为它是该控件的内置功能。
谢谢。

你能贴一些相关的代码吗? - Caspar Kleijne
显然下划线不会显示出来,因为&仍然可见。为什么是无法猜测的,这种行为是由Windows实现的,而不是由.NET代码实现的。不要写&&File。 - Hans Passant
我能想到的唯一合理解释是你的标题是&&File。 - David Heffernan
@Hans,它只在菜单的顶层绘制。子菜单不显示&字符。我没有写&&...问题是当按下ALT键时,下划线不出现,但应该出现。 - Watsumoto
对于按钮、标签等,有一个名为 UseMnemonics 的属性,它允许您控制 "&" 字符是否转换为文字或快捷键。检查一下 Form/MainMenu/MenuItem 是否有这个设置,并将其设置为 true。这可能会解决您的问题。 - Raghu
这里涉及到一些编译的外部GUI扩展,覆盖了菜单的渲染。一开始怀疑是源代码中的问题,但后来我查看了扩展引用并检查了其中的一些方法,发现有一个覆盖导致了这个问题。 - Watsumoto
2个回答

0

你的Form.MainMenu是否设置为你的MainMenu

对于子菜单项,还需要检查相关的Windows设置:在WinXp中,它位于显示属性/外观/XP上的效果下。


是的。按ALT键时它不会出现。这些设置是为了让下划线始终可见。尽管在设计视图中我已经添加了下划线并且可以在那里看到,但下划线根本不会出现。MainMenu是遗留控件还是其他什么东西吗?因为在VS的工具窗格中它没有出现(只有MenuStrip),这让我想到如果它是XP之前的控件,则不可能实现。 - Watsumoto
不,如果我没记错的话,MainMenu在.Net 1.x和2.x中是被支持的。现在建议使用MenuStrip,但为了向后兼容性,仍然可以完全使用MainMenu - InBetween

0
请确保菜单中的项目具有属性ShowShortCutKeys = true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接