Обратная несовместимость шрифта - PullRequest
3 голосов
/ 16 июня 2009

Я использую пользовательский интерфейс Segoe для своего приложения winforms.

В XP этот шрифт не существует, и я бы хотел, чтобы мое приложение использовало Verdana.

Какой лучший способ добиться этого?

Ответы [ 3 ]

3 голосов
/ 21 июня 2009

Всегда лучше использовать стандартный (системный) шрифт, чтобы добиться естественного вида. Так что Vista использует «Sergoe UI» в качестве шрифта по умолчанию, а XP использует «Tahoma» для этого (не «Verdana»). Чтобы получить шрифт диалога по умолчанию, используйте класс SystemFonts:

protected override void OnLoad(EventArgs e)
{
  base.OnLoad(e);
  Font = SystemFonts.DialogFont;
}
0 голосов
/ 18 июня 2009

Начните с решения JasonH, включая часть о выводе из формы. Если у вас есть проблемы с элементами управления, которые не наследуют шрифт формы автоматически, вызовите этот код, когда ваша форма имеет все свои элементы управления:

foreach (Control ctl in this.Controls)
{
    ctl.Font = GetUIFont();
}
0 голосов
/ 16 июня 2009

То, что вы хотите, выглядит примерно так:

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