C# WinForms.FontDialog中缺少字体

C# WinForms.FontDialog中缺少字体,c#,winforms,fonts,C#,Winforms,Fonts,当我显示WinForms.FontDialog(C#,.NET 2.0)的实例时,我丢失了一些我希望出现的字体(例如Courier、Fixedsys、MS Sans Serif)。此外,一位客户抱怨他安装的Adobe字体也没有出现在列表中 如何使这些字体显示在此对话框中?FontDialog旨在仅显示TrueType字体,以保持与GDI+兼容。让它显示设备字体需要一些反射黑客: using System.Reflection; 我不知道这是否也支持Adobe的OpenType字体,我没有。让

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


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

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

using System.Reflection;


我不知道这是否也支持Adobe的OpenType字体,我没有。让我们知道。

这会不会引发“无效字体异常”,因为GDI+只支持true type字体。当然,预期OP会对其进行其他处理。是否有任何覆盖,以便字体对话框仅显示有效的true type字体。
FontDialog设计为仅显示TrueType字体,以保持与GDI+兼容。
FontDialog fontDialog1 = new FontDialog();

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