Question

I am using Segoe UI for my winforms application.

On XP, this font doesn't exist and I would like to have my app use Verdana instead.

What's the best way of achieving that.

Was it helpful?

Solution

It is always better to use default (system) font to achieve native look. So Vista uses 'Sergoe UI' as default font, and XP uses 'Tahoma' for this (not 'Verdana'). To get default dialog font use SystemFonts class:

protected override void OnLoad(EventArgs e)
{
  base.OnLoad(e);
  Font = SystemFonts.DialogFont;
}

OTHER TIPS

What you want is something like this:

Font GetUIFont()
{
    Font testFont = new Font("Segoe UI", 10f);
    if (testFont.Name == "Segoe UI")
        return testFont;
    else
        return new Font("Verdana", 10f);
}

Start with JasonH's solution, including the part about deriving from Form. If you have problems with controls that don't inherit the Form's font automatically, call this code when your form has all of its controls:

foreach (Control ctl in this.Controls)
{
    ctl.Font = GetUIFont();
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top