Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
418 views
in Technique[技术] by (71.8m points)

c# - Fonts missing in WinForms.FontDialog

When I display an instance of WinForms.FontDialog (C#, .NET 2.0), I am missing some fonts that I expect to be there (e.g. Courier, Fixedsys, MS Sans Serif). Also, a customer is complaining that Adobe fonts he has installed are also not showing up in the list.

How can I get these fonts to display in this dialog?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

FontDialog was designed to only show TrueType fonts to stay compatible with GDI+. Getting it to show the device fonts takes a bit of Reflection hacking:

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();

I don't know whether this also enables Adobe's OpenType fonts, I don't have any. Let us know.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...