Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms应用程序在Windows 7和Windows XP中的菜单格式不同_Winforms_Visual Studio 2008_Windows 7_Menu - Fatal编程技术网

Winforms应用程序在Windows 7和Windows XP中的菜单格式不同

Winforms应用程序在Windows 7和Windows XP中的菜单格式不同,winforms,visual-studio-2008,windows-7,menu,Winforms,Visual Studio 2008,Windows 7,Menu,我有一个Winforms应用程序,最初是在VS2005中创建的,后来被转换为VS2008。在Windows 7中运行此应用程序时,菜单与Windows 7中的标准菜单不同(即,菜单项的格式与其他应用程序的格式不同)。这适用于应用程序菜单栏上显示的菜单以及右键单击上下文菜单。仅供参考,我正在使用System.Windows.Forms.MenuStrip和System.Windows.Forms.ContextMenuStrip控件 有人知道为什么菜单没有使用默认的Windows 7外观进行渲染吗

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


有人知道为什么菜单没有使用默认的Windows 7外观进行渲染吗?

如果菜单中有任何OWNERDRAW项,Windows 7将恢复到向后兼容的绘图模式,以避免中断代码。是否覆盖任何项目的绘图?

如果菜单中有任何OWNERDRAW项目,Windows 7将恢复到向后兼容的绘图模式,以避免中断代码。是否覆盖任何项目的绘图?

MenuStrip使用自定义渲染器,而不是让Windows来绘制菜单。您可以将RenderMode属性更改为System,但这没有帮助,它是系统绘制菜单的Win7之前版本。如果希望Windows呈现菜单,则必须返回到.NET 1.1主菜单组件。另一种方法是将Renderer属性指定给您自己的自定义渲染器,这并不实际


这也是WPF的一个问题,更糟糕的是,它会呈现所有控件本身。我们很快就要进入这样一个阶段:程序的外观是由UI类库决定的,而不是由操作系统决定的。

MenuStrip使用自定义渲染器,而不是由Windows来绘制菜单。您可以将RenderMode属性更改为System,但这没有帮助,它是系统绘制菜单的Win7之前版本。如果希望Windows呈现菜单,则必须返回到.NET 1.1主菜单组件。另一种方法是将Renderer属性指定给您自己的自定义渲染器,这并不实际


这也是WPF的一个问题,更糟糕的是,它会呈现所有控件本身。我们很快就要进入这样一个阶段:程序的外观是由UI类库决定的,而不是由操作系统决定的。

John,不,我不是在菜单中使用OWNERDRAW。我尝试了RenderMode属性的不同值,虽然它确实更改了菜单,但它们看起来仍然不像Windows 7的默认值。听起来像是你触发了兼容性攻击。你做过任何非客户端消息处理吗?约翰,没有。基本上所有的东西都是“开箱即用”的功能。不过,我确实注意到,我的菜单与SQL Server Management Studio for SQL Server 2008中的菜单相似,也与标准的Windows 7菜单不同。请尝试使用spy++将窗口样式(和扩展样式)与具有Windows 7外观的窗口相比较。如果那样不行,我就没有主意了。对不起,约翰,谢谢你的帮忙。使用spy++进行调查是个好主意。John,不,我没有使用OWNERDRAW作为菜单。我尝试了RenderMode属性的不同值,虽然它确实更改了菜单,但它们看起来仍然不像Windows 7的默认值。听起来像是你触发了兼容性攻击。你做过任何非客户端消息处理吗?约翰,没有。基本上所有的东西都是“开箱即用”的功能。不过,我确实注意到,我的菜单与SQL Server Management Studio for SQL Server 2008中的菜单相似,也与标准的Windows 7菜单不同。请尝试使用spy++将窗口样式(和扩展样式)与具有Windows 7外观的窗口相比较。如果那样不行,我就没有主意了。对不起,约翰,谢谢你的帮忙。使用spy++进行调查是一个好主意。