【问题标题】:How do I right align the shortcut keys in Menu?如何右对齐菜单中的快捷键?
【发布时间】:2011-06-25 21:28:21
【问题描述】:

我添加了我的菜单项快捷键,但它们排列不当。

我需要这样:

【问题讨论】:

    标签: winforms winapi menu alignment shortcut


    【解决方案1】:

    如您所见,它们是“右”对齐的。 (没有双关语)。

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

    【讨论】:

      【解决方案2】:

      每个操作系统都有其特定的外观和感觉,我想您必须有充分的理由不尊重 Windows 上其他所有应用程序的外观。我猜你要么放弃这个问题,要么用OwnerDrawn 项目扩展菜单。

      Here 是关于这个主题的矫枉过正的文章。

      【讨论】:

        【解决方案3】:

        啊,我想我终于弄明白了如何做到这一点(你是如何得到这两个不同的屏幕截图的,这让我困惑了很长一段时间......)。事实证明,您可以通过 两种 方式指示 Windows 在下拉菜单中对齐快捷键。

        第一种(可能也是最标准的)方法是在菜单文本对应的字符串中插入一个制表符 (\t)。这会产生原始问题中显示的底部示例,其中所有标识符都左对齐并且有些悬垂。这是几乎所有 Microsoft 应用程序中的标准,也是我在几分钟前才知道存在的唯一选项。

                  示例资源字符串:&Print…\tCtrl+P

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

                  示例资源字符串:&Print…\aCtrl+P

        因此,如果您希望您的菜单看起来像原始问题中的 second 示例(是的,我混淆了我的示例向后排列。抱歉),您需要用包含菜单项文本字符串的资源文件中的制表符 (\t)。

        奇怪的是,您声称使用的是 .NET WinForms,它会自动处理所有这些(让您免于弄乱资源文件的痛苦)。我知道它会插入制表符,并且我见过它生成的所有菜单 do 看起来都像您的第二个示例。

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

        Microsoft 的official documentation确实确认MainMenu control 仍受支持以供将来使用,因此无需担心在您的应用中使用它。我强烈建议大家改用这个:

        尽管 MenuStrip 替换了以前版本的 MainMenu 控件并为其添加了功能,但 MainMenu 仍保留为向后兼容和将来使用(如果您选择)。

        【讨论】:

        • \a(警铃)在使用 AppendMenu(..., "&Open\aCtrl+O"); 时不起作用,你知道如何使用'AppendMenu'(不使用资源文件)来使用这个东西吗?
        猜你喜欢
        • 2011-04-23
        • 2022-11-17
        • 2017-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-06
        • 1970-01-01
        相关资源
        最近更新 更多