C#/ WinForms:如何防止基于OS语言的字体更改

时间:2010-09-23 16:23:25

标签: c# .net winforms fonts

我在C#中编写了一个WinForms程序并保留了所有表单控件的默认字体(标签,复选框......)(字体是Tahoma,我想,但不确定)。当我编译程序然后在日语计算机上运行它时,所有字体都切换到“MS UI Gothic”(日语字体)。

无论如何我可以强制所有平台上的字体相同吗?目前它很多地混淆了布局,因为角色的宽度取决于字体......

3 个答案:

答案 0 :(得分:3)

正如评论中已经提到的,真正的解决方案是确保您的表单布局可以处理不同的字体和字体大小。毕竟,即使是英语用户有时也会在其控制面板中更改字体大小。

也就是说,您可以通过在表单上设置Font属性来强制使用字体。大多数(如果不是全部)控件将继承表单中的字体,如果它们没有自己设置的显式字体。因此,您可以在表单设计器中显式设置Font,或者 - 如果您希望在运行时确定确切的字体 - 在调用InitializeComponent()之后在构造函数中设置。但是当你这样做时,请注意①如果另一台机器上不存在该字体,这将导致异常; ②你将使你的软件在未来更加国际化。

答案 1 :(得分:1)

您可以通过Font属性显式设置表单中的字体。但是,如果字体在计算机上不可用,我不确定会有什么反应。

答案 2 :(得分:0)

如果您的程序将在不同语言的操作系统上运行,您应该尽可能地预先考虑这一点。以下是来自MSDN的好文章 - Globalization Step-by-Step,特别是Globalization Step-by-Step Fonts