2009-06-16 85 views
3

我爲我的winforms應用程序使用Segoe UI。字體後向不兼容

在XP上,這個字體不存在,我想讓我的應用程序使用Verdana。

實現該目標的最佳方式是什麼?

回答

3

它始終是更好地使用默認(系統)字體,實現本機的外觀。所以Vista使用'Sergoe UI'作爲默認字體,而XP使用'Tahoma'作爲這個(而不是'Verdana')。要獲得默認對話框字體使用SystemFonts類:

protected override void OnLoad(EventArgs e) 
{ 
    base.OnLoad(e); 
    Font = SystemFonts.DialogFont; 
} 
0

你需要的是這樣的:

Font GetUIFont() 
{ 
    Font testFont = new Font("Segoe UI", 10f); 
    if (testFont.Name == "Segoe UI") 
     return testFont; 
    else 
     return new Font("Verdana", 10f); 
} 
+0

...但你怎麼辦自動爲應用程序中每個窗體和控件?你如何確保佈局仍然正確?等等 – 2009-06-16 08:31:10

0

開始JasonH的解決方案,其中包括關於從表格導出一部分。如果你有一個控制的問題,不會自動繼承窗體的字體,調用此代碼時,你的窗體有所有的控件:

foreach (Control ctl in this.Controls) 
{ 
    ctl.Font = GetUIFont(); 
}