Winforms 字体向后不兼容
我正在为我的winforms应用程序使用Segoe UI 在XP上,这种字体不存在,我想让我的应用程序改用VerdanaWinforms 字体向后不兼容,winforms,fonts,windows-xp,Winforms,Fonts,Windows Xp,我正在为我的winforms应用程序使用Segoe UI 在XP上,这种字体不存在,我想让我的应用程序改用Verdana 实现这一目标的最佳方式是什么。您想要的是: Font GetUIFont() { Font testFont = new Font("Segoe UI", 10f); if (testFont.Name == "Segoe UI") return testFont; else return new Font("Verda
实现这一目标的最佳方式是什么。您想要的是:
Font GetUIFont()
{
Font testFont = new Font("Segoe UI", 10f);
if (testFont.Name == "Segoe UI")
return testFont;
else
return new Font("Verdana", 10f);
}
从JasonH的解决方案开始,包括关于从形式派生的部分。如果无法自动继承窗体字体的控件出现问题,请在窗体具有所有控件时调用以下代码:
foreach (Control ctl in this.Controls)
{
ctl.Font = GetUIFont();
}
最好使用默认(系统)字体来实现本机外观。所以Vista使用“Sergoe UI”作为默认字体,XP使用“Tahoma”作为默认字体(而不是“Verdana”)。要获取默认对话框字体,请使用SystemFonts类:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Font = SystemFonts.DialogFont;
}
…但如何为应用程序中的每个窗体和控件自动执行此操作?如何确保布局仍然正确?等等。您可以做的是从表单派生,然后使用派生类。在派生表单的构造函数中,您可以调用GetUIFont方法来设置表单的字体,然后这将使其自动。至于布局,我总是看到我的表单在更改字体大小时自动调整。你可能不得不去玩那个游戏,如果你有问题,你可以随时在这里寻求帮助