Ах, я думаю, что наконец-то понял, как это сделать (довольно долго меня удивляло, как вы получили два разных скриншота ...).Оказывается, есть два способа указания Windows для выравнивания сочетаний клавиш в раскрывающемся меню.
Первый (и, вероятно, самый стандартный) способ - вставить * 1005.* символ табуляции (\t
) в строке, соответствующей тексту меню.Это приводит нижний пример, показанный в вашем исходном вопросе, где все идентификаторы выровнены по левому краю, а некоторые слегка нависают.Это стандарт почти во всех приложениях Microsoft, и единственный известный мне вариант существовал несколько минут назад.
Пример строки ресурса: &Print…\tCtrl+P
Второй способ -заменить эту escape-последовательность \t
на \a
в строке ресурса (что, как ни странно, обычно означает сигнал тревоги ).Это заставляет Windows вправо выравнивать все последовательности сочетаний клавиш в меню, создавая пример, показанный на первом скриншоте.Это создает меню, которое использует пространство на экране более эффективно (оно меньше), но это происходит за счет аккуратного выравнивания каждой из последовательностей клавиш быстрого доступа по левым полям, что, как мне кажется, облегчает чтение.
Пример строки ресурса: &Print…\aCtrl+P
Так что если вы хотите, чтобы ваши меню выглядели как пример second в вашем первоначальном вопросе (Да, я запуталсяупорядочил мои образцы в обратном направлении. Извините), вам нужно разделить последовательность сочетаний клавиш символом табуляции (\t
) в файле ресурсов, содержащем текстовые строки вашего пункта меню.
Странно то, что вы утверждаете, чтоиспользовать .NET WinForms, которая обрабатывает все это автоматически (избавляя вас от необходимости возиться с файлами ресурсов).Я точно знаю, что он вставляет символы табуляции, и все меню, которые я когда-либо видел, генерируют do , которые выглядят как ваш второй пример.
Лучше всего переключить ваше меню на старый MainMenu
элемент управления, включенный в более раннюю версию .NET Framework.(Чтобы сделать это, вам, вероятно, придется щелкнуть правой кнопкой мыши на Панели инструментов и добавить элемент управления вручную - его нет по умолчанию в более поздних версиях Visual Studio.) Это гарантирует, что вы увидите ожидаемое поведение выравнивания,согласуется со всеми стандартными приложениями Windows, такими как Блокнот.Он также создает меню, которые выглядят как меню родной операционной системы (в Vista и 7 они окрашены в синий цвет), а не как любительское меню, нарисованное владельцем, созданное элементом управления MenuStrip
, которые совершенно неуместны в современнойверсии Windows.
Официальная документация Microsoft подтверждает , что MainMenu
control все еще поддерживается для будущего использования, поэтому нет причинбояться использовать его в своих приложениях.Я очень рекомендую всем использовать это вместо:
Хотя MenuStrip заменяет и добавляет функциональность в элемент управления MainMenu предыдущих версий, MainMenu сохраняется как для обратной совместимости, так и для будущего использования, если вы выберете.