2010-01-26 61 views
0

我有一个Winforms应用程序,最初是在vs 2005中创建的,已转换为vs 2008.在Windows 7中运行此应用程序时,菜单不会看起来像Windows 7中的标准菜单(即,菜单项的格式与其他应用程序的格式不同)。这适用于应用程序菜单栏上显示的菜单以及右键单击上下文菜单。仅供参考,我正在使用System.Windows.Forms.MenuStrip和System.Windows.Forms.ContextMenuStrip控件。Windows 7和Windows XP中的Winforms应用程序的菜单格式不同

有谁知道为什么菜单没有默认的Windows 7外观和感觉?

回答

3

MenuStrip使用自定义渲染器,它不会让它直到Windows来绘制菜单。您可以将RenderMode属性更改为System,但这没有帮助,它是系统绘制的菜单看起来像的Win7之前的版本。如果你想让Windows呈现菜单,那么你必须回退到.NET 1.1 MainMenu组件。另一种方法是将Renderer属性分配给您自己的自定义渲染器,这并不实际。

这也是一个WPF的问题,更糟的是因为它呈现所有的控件本身。我们正在快速接近一个阶段,其中程序的外观由UI类库确定,而不是操作系统。

0

如果您的菜单中有任何OWNERDRAW项目,Windows 7将恢复为向后兼容的绘图模式以避免破坏您的代码。你是否重写任何项目的绘图?

+0

John,不,我没有使用OWNERDRAW作为菜单。我尝试了RenderMode属性的不同值,虽然它确实改变了菜单,但它们看起来并不像Windows 7的默认值。 – OneSource 2010-01-26 10:22:05

+0

听起来像是在触发兼容性黑客攻击。你做任何非客户端的消息处理? – 2010-01-26 10:24:04

+0

John,no。一切基本上都是“开箱即用”的功能。不过,我注意到,我的菜单看起来像SQL Server 2008的SQL Server Management Studio中的菜单,它们与标准的Windows 7菜单看起来也不一样。 – OneSource 2010-01-26 10:34:33

相关问题