MainMenu 控件在使用 & 并按 ALT 时不显示下划线

Posted

技术标签:

【中文标题】MainMenu 控件在使用 & 并按 ALT 时不显示下划线【英文标题】:MainMenu control not displaying underlining when using & and pressing ALT 【发布时间】:2011-06-25 06:58:47 【问题描述】:

我在 WinForm 中使用 MainMenu 控件(不是 MenuStrip)。在设计视图中,我可以在文本字段中放置一个 &,它会显示下划线,但是当程序运行时,我按 ALT 它不会出现。

由于某种原因,在顶层使用时,'&' 字符实际上被绘制(例如 &File)到显示器上。

以前有人遇到过这个问题并解决了吗?我已经四处搜索,除了自己绘制之外没有找到解决方案,但这似乎是一个应该可以解决的问题,因为它是控件的内置功能。

谢谢

【问题讨论】:

能发一些相关的代码吗? 显然下划线没有出现,因为 & 仍然可见。为什么无法猜测,这种行为是由 Windows 实现的,而不是由 .NET 代码实现的。不要写 &&File。 唯一对我有意义的解释是你的标题是 &&File @Hans 它只绘制在菜单的顶层。子菜单不显示 & 字符。我不是在写 &&... 问题是按下 ALT 键时没有出现下划线,它应该这样做。 按钮、标签等有一个 UseMnemonics 属性,可让您控制是否将 "&" 字符转换为文字或快捷方式钥匙。检查此设置是否适用于 Form/MainMenu/MenuItem 并将其设置为 true。这可能会解决您的问题。 【参考方案1】:

Form.MainMenu 是否设置为您的MainMenu

对于 SubMenuItems 还要检查相关的窗口设置:在 WinXp 中,它位于 XP 上的显示属性/外观/效果下

【讨论】:

是的。按下 ALT 时它不会出现。这些设置是为了让下划线始终可见。即使在设计视图中我添加了下划线并且在那里可见,下划线也根本不会出现。 MainMenu 是旧控件还是什么?因为它没有出现在 VS 的工具窗格下(仅 MenuStrip),所以它让我想到如果它是 XP 之前的控件,可能无法使用此控件。 不,如果我没记错的话,.Net 1.x 和 2.x 支持 MainMenu。现在建议使用MenuStrip,但为了向后兼容,使用MainMenu 仍然是100% 没问题的。【参考方案2】:

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

【讨论】:

以上是关于MainMenu 控件在使用 & 并按 ALT 时不显示下划线的主要内容,如果未能解决你的问题,请参考以下文章

delphi MainMenu组件求助。

Delphi中mainmenu的用法

Firemonkey 调整 MainMenu 字型大小 (D10)

MT6261菜单创建(实例代码,含窗口控件NVRAM的使用)

界面生成器无法确定“mainmenu.xib”的类型

如何在 Cocoa 应用程序中手动创建和附加 MainMenu.xib?