Winforms MenuStrip带下划线的热键字母

Jef*_*eff 6 .net hotkeys menustrip underline winforms

通常,MenuStrip上的热键字母带有下划线.(&File,&Open等)在项目中,我正在设计下划线,但不是在运行时.我找不到控制它的属性.有人知道吗?

Cri*_*lin 14

您可以通过创建自定义ToolStrip渲染器来强制用户查看下划线.我花了很长时间才弄清楚如何绕过克里斯的答案.这是我创建的渲染器:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace YourNameSpace
{
    class CustomMenuStripRenderer : ToolStripProfessionalRenderer
    {
        public CustomMenuStripRenderer() : base() { }
        public CustomMenuStripRenderer(ProfessionalColorTable table) : base(table) { }

        protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
        {
            e.TextFormat &= ~TextFormatFlags.HidePrefix;
            base.OnRenderItemText(e);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在带有MenuStrip的Form中,在构造函数中设置渲染器:

public YourFormConstructor()
{
    InitializeComponents();
    menuStripName.Renderer = new CustomMenuStripRenderer();
}
Run Code Online (Sandbox Code Playgroud)

我想指出,如果您更喜欢渲染的系统样式外观,可以扩展ToolStripSystemRenderer类而不是Professional,但我喜欢能够自定义颜色表.这是不需要客户端更改其计算机设置的修复程序.请享用!


Chr*_*son 9

在Windows中,有一个设置是否显示下划线.要更改设置,

  1. 右键单击桌面
  2. 选择"属性"
  3. 单击"外观"选项卡
  4. 单击"效果"按钮
  5. 取消选中标有"隐藏用于键盘导航的带下划线字母"的复选框

  • 我的意思是,这真的能解决问题吗?获取应用程序的任何用户都需要手动更改该设置,或者您需要向设置应用程序添加一些内容才能自动更改设置. (2认同)

Mar*_*ark 8

只有在用户按下alt键时,它们才会在运行时显示.当您按下alt键时,表单会认为您可能想要使用其中一个快捷方式,因此它会显示任何下划线.