2010-10-08 31 views
0

以前我曾經使用VB6來開發一些個人項目。下面我升級到Windows 7,我決定小罐約與vb.net快捷版2010使vb.net應用程序與Windows主題融合

如果我想我的VB6應用程序與Windows的視覺風格融合在一起,我會用描述的代碼和技術here。總之,我會在應用程序中使用Manifest文件和幾個調用,並且大多數元素看起來與應用的XP主題類似。如果它在2000,95或98上運行,那麼它將看起來像一個標準的Windows應用程序。一切都很好。

現在我已經移動到vb.net,我寫了一個簡單的「Hello,World」應用程序,但我對如何使它看起來像Windows 7的主題完全不知道(如字體匹配系統字體和小部件的樣式正確)。

只是改變了字體是一個黑客,會看出來的地方就被設定了不同的或運行不同版本的Windows,其中的默認字體是不同的機器。

如何確保我的應用程序中應用Windows主題無關的Windows版本匹配?

+0

你不應該有,如果你正在使用標準組件和控件做任何事情。他們已經拿起當前Window的主題。或者至少他們用C#做。 – ChrisF 2010-10-08 11:10:06

+0

在.NET 2003中,你必須設置每個控件的'FlatStyle'屬性'System',然後調用''Application.EnableVisualStyles代碼中的()。這對Buttons這樣的事情是必要的,但它看起來像其他控件自動格式化。不確定在VB的更高版本中是否出現這種情況。 – 2010-10-08 11:17:20

回答

1

,如果你創建一個Windows窗體應用程序有很多,這是自動的。他們將(主要)使用標準的本機Windows控件,以自己的主題顏色進行繪製。但也有例外:

  • 窗體項模板使用默認的字體命名爲Microsoft無襯線。您必須將其更改爲Segoe UI以匹配Vista/Win7默認設置。這隻對Form類是必需的,所有放在它上面的控件都會自動繼承該字體。在XP機器上,Windows字體映射器會注意到字體丟失並自動回退到MSS。

  • 中的MenuStrip類使用自定義的渲染繪製菜單項。它嘗試在將RenderMode屬性更改爲System時匹配Windows樣式,但它繪製的方式與Win7樣式不匹配。右鍵單擊工具箱,選擇項目並選擇MainMenu。這是一箇舊版本,確實使用Windows來繪製菜單,因此它產生適當的主題外觀。

  • 爲ToolStrip的一個非常類似的問題。它的傳統版本是ToolBar。這是一個難以吞下的東西,它不使用使工具欄看起來平坦和醜陋的鋼筋。

有WPF中,但與WPF不使用任何標準的Windows控件的添加問題類似的問題。在微妙的地方弄錯了。

相關問題