2009-06-16 113 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(); 
}