Winforms MenuStrip 带下划线的热键字母
Posted
技术标签:
【中文标题】Winforms MenuStrip 带下划线的热键字母【英文标题】:Winforms MenuStrip Underlined Hotkey Letter 【发布时间】:2010-10-24 05:44:30 【问题描述】:MenuStrip 上的热键字母通常带有下划线。 (&File、&Open 等)在我正在处理的项目中,下划线会显示在设计器中,但不会在运行时显示。我找不到控制它的属性。有谁知道吗?
【问题讨论】:
当你按下 Alt 键时它们会出现吗? 【参考方案1】:您可以通过创建自定义 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);
然后在带有 MenuStrip 的表单中,在构造函数中设置渲染器:
public YourFormConstructor()
InitializeComponents();
menuStripName.Renderer = new CustomMenuStripRenderer();
我想指出,如果您更喜欢系统风格的渲染外观,您可以扩展 ToolStripSystemRenderer 类而不是 Professional,但我喜欢能够自定义颜色表。这是不需要客户端更改其计算机设置的修复程序。享受吧!
【讨论】:
感谢克里斯,您提供的正是我想要的。 可以这样工作,但应用于命令按钮(也可以有热键)?? 很好的解决方案。 ToolStripProfressionalRenderer 上有一个小错字。它应该是 ToolStripProfessionalRenderer。【参考方案2】:在 Windows 中,有一个是否显示下划线的设置。要更改设置,
-
桌面右键
选择“属性”
点击“外观”标签
点击“效果”按钮
取消选中标有“隐藏带下划线的字母以进行键盘导航”的框
【讨论】:
不错的一个。我知道该设置在某个地方,但请记住如何到达它。 谢谢,就是这样。现在问这个问题感觉有点傻。 :-) 我的意思是这真的能解决问题吗?任何获得您的应用程序的用户都需要手动更改该设置,或者您需要向设置应用程序添加一些内容才能自动更改设置。 请查看我下面的帖子以获得更好的解决方案【参考方案3】:它们只会在用户按下 alt 键时在运行时显示。当您按下 alt 键时,表单会认为您可能想要使用其中一个快捷方式,因此它会显示任何下划线。
【讨论】:
【参考方案4】:对于与此相关的后续问题,即,使其适用于您的所有应用程序热键:
[DllImport ("user32.dll")]
static extern void SystemParametersInfo(uint uiAction, uint uiParam, ref
int pvParam, uint fWinIni);
const uint SPI_SETKEYBOARDCUES = 0x100B;
private static void GetAltKeyFixed()
//Set pvParam to TRUE to always underline menu access keys,
int pv = 1;
/* Call to systemparametersinfo to set true of pv variable.*/
SystemParametersInfo(SPI_SETKEYBOARDCUES, 0, ref pv, 0);
在 Application.Run 或等效之前调用 GetAltKeyFixed。
我需要这个来满足 508 的要求,几乎所有关于这个主题的答案都是更改桌面设置或简洁的“你为什么要这样做?”回复。这不是我听到的最疯狂的要求。
【讨论】:
【参考方案5】:在 windows 10 中设置是在
Settings
- Ease of Access
- Keyboard
- Underline access keys when available
在Change how keyboard shortcuts work section
.
【讨论】:
以上是关于Winforms MenuStrip 带下划线的热键字母的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 DevExpress WinForms TextEdit 作为密码输入(带星号)?
带有 MimeKit、C# Winforms 和 Google API 的 Gmail 草稿(带附件的 HTML)