2010-01-26 26 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

相關問題