3

当我显示 WinForms.FontDialog(C#、.NET 2.0)的一个实例时,我缺少一些我希望出现的字体(例如 Courier、Fixedsys、MS Sans Serif)。此外,一位客户抱怨他安装的 Adob​​e 字体也没有出现在列表中。

如何让这些字体显示在此对话框中?

4

1 回答 1

6

FontDialog 旨在仅显示 TrueType 字体以保持与 GDI+ 的兼容性。让它显示设备字体需要一些反射黑客:

using System.Reflection;

...

FontDialog fontDialog1 = new FontDialog();

MethodInfo mi = typeof(FontDialog).GetMethod("SetOption", 
    BindingFlags.NonPublic | BindingFlags.Instance);
        mi.Invoke(fontDialog1, new object[] { 0x40000, false });
fontDialog1.ShowDialog();

我不知道这是否也启用了 Adob​​e 的 OpenType 字体,我没有。让我们知道。

于 2008-12-02T03:05:26.420 回答