Формат меню в Windows 7 отличается от Windows XP для приложения Winforms - PullRequest
0 голосов
/ 26 января 2010

У меня есть приложение Winforms, которое было изначально создано в версии 2005 и было преобразовано в версию 2008. При запуске этого приложения в Windows 7 меню не похожи на стандартные меню в Windows 7 (то есть пункты меню отличаются от форматирования для других приложений). Это относится к меню, отображаемым в строке меню приложения, а также к контекстным меню, вызываемым правой кнопкой мыши. К вашему сведению, я использую элементы управления System.Windows.Forms.MenuStrip и System.Windows.Forms.ContextMenuStrip.

Кто-нибудь знает, почему меню не отображаются со стандартным внешним видом Windows 7?

Ответы [ 2 ]

3 голосов
/ 26 января 2010

MenuStrip использует пользовательский рендерер, он не оставляет Windows для рисования меню. Вы можете изменить свойство RenderMode на System, но это не поможет, это версия до рисования, как выглядело системное меню. Если вы хотите, чтобы Windows отображала меню, вам придется вернуться к компоненту .NET 1.1 MainMenu. Другой способ - присвоить свойству рендерера свой собственный рендерер, что не очень удобно.

Это также проблема с WPF, хуже, потому что он отображает все элементы управления сам. Мы быстро приближаемся к этапу, когда внешний вид программы определяется библиотекой классов пользовательского интерфейса, а не операционной системой.

0 голосов
/ 26 января 2010

Если у вас есть какие-либо элементы OWNERDRAW в ваших меню, Windows 7 вернется в режим обратной совместимости рисования, чтобы избежать нарушения вашего кода. Вы отменяете рисунок какого-либо из предметов?

...