如何右键对齐菜单中的快捷键?

Med*_*tor 7 winapi menu shortcut alignment winforms

我添加了菜单项快捷键,但排列不当.

在此输入图像描述

我需要这样做:

在此输入图像描述

Cod*_*ray 7

啊,我想我终于想出了如何做到这一点(很长一段时间以来我一直在困惑你如何获得两个不同的截图......).事实证明,有两种方法可以指示Windows在下拉菜单中对齐快捷键.

第一种(也可能是最标准的)方法是在与菜单文本对应的字符串中插入制表符(\t\n).这将生成原始问题中显示的底部示例,即所有标识符左对齐且稍微悬垂的示例.这是几乎所有Microsoft应用程序的标准,也是我知道的唯一选项,直到几分钟前才存在.

     第一个选项,使用制表符分隔符创建,快捷键序列左对齐     示例资源字符串: &Print…\tCtrl+P

第二种方法是在资源字符串中替换该\t转义序列\a(是的,奇怪的是通常表示警报铃声).这会导致Windows 对齐菜单中的所有快捷键序列,从而生成第一个屏幕截图中所示的示例.这确实产生了一个更有效地使用屏幕空间的菜单(它更小),但这是以每个快捷键序列沿左手边缘整齐对齐为代价的,我认为这使得可读性稍微容易一些.

     第二个选项,使用'\ a'分隔符创建,快捷键序列右对齐     示例资源字符串: &Print…\aCtrl+P

因此,如果您希望您的菜单看起来像原始问题中的第二个示例(是的,我会混淆地向后排列我的样本.抱歉),您需要使用\t包含资源文件中的制表符()来划分快捷键序列.您的菜单项文本字符串.

奇怪的是,您声称使用的是.NET WinForms,它可以自动处理所有这些(使您免于弄乱资源文件的麻烦).我知道它插入制表符的事实,我见过它生成的所有菜单看起来像你的第二个例子.

最好的办法是将菜单切换到MainMenu早期版本的.NET Framework中包含的旧控件.(为此,您可能必须右键单击工具箱并手动添加控件 - 默认情况下,在Visual Studio的更高版本中不存在.)这将确保您看到预期的对齐行为,与记事本等所有标准Windows应用程序一致.它还生成看起来像本机操作系统菜单的菜单(在Vista和7中,它们被涂成蓝色)而不是由MenuStrip控件生成的业余外观所有者绘制的菜单,这些菜单在现代版本的Windows中完全不合适.

微软的官方文档 确实证实该MainMenu控件仍然支持将来使用,所以没有理由担心在你的应用程序中使用它.我强烈建议每个人都使用它:

虽然MenuStrip替换并添加了以前版本的MainMenu控件的功能,但是如果您选择,MainMenu将保留用于向后兼容和将来使用.


Gol*_*rol 5

正如你所看到的,它们是"正确的"对齐的.(没有双关语).

对

这是菜单的默认行为.您需要自定义绘图才能以不同方式执行此操作.