Поделиться через


Международные шрифты в формах и элементах управления Windows Forms

В международных приложениях рекомендуемым методом выбора шрифтов является переход на резервный вариант шрифта везде, где это возможно. Переход на резервный вариант шрифта означает, что система определяет, к какой системе письма относится символ.

Использование перехода на резервный вариант шрифта

Чтобы воспользоваться этой функцией, не устанавливайте свойство Font для формы или любого другого элемента. Приложение будет автоматически использовать системный шрифт по умолчанию, который зависит от языка локализации операционной системы. При запуске приложения система автоматически предоставит правильный шрифт для языка и региональных параметров, выбранных в операционной системе.

Существует исключение из правила "не задавать шрифт", которое необходимо для изменения стиля шрифта. Это может быть важно для приложения, в котором пользователь нажимает кнопку, чтобы текст в текстовом поле отображался полужирным шрифтом. Для этого необходимо написать функцию, изменяющую стиль шрифта в текстовом поле на полужирный с учетом шрифта формы. Эту функцию следует вызывать в двух местах: в обработчике событий Click кнопки и в обработчике событий FontChanged. Если она вызывается только в обработчике событий Click, а в другой части кода семейство шрифтов изменяется для всей формы, текстовое поле не изменяется с остальной формой.

Private Sub MakeBold()
   ' Change the TextBox to a bold version of the form font
   TextBox1.Font = New Font(Me.Font, FontStyle.Bold)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   ' Clicking this button makes the TextBox bold
   MakeBold()
End Sub

Private Sub Form1_FontChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.FontChanged
   ' If the TextBox is already bold and the form's font changes,
   ' change the TextBox to a bold version of the new form font
   If (TextBox1.Font.Style = FontStyle.Bold) Then
      MakeBold()
   End If
End Sub
private void button1_Click(object sender, System.EventArgs e)
{
   // Clicking this button makes the TextBox bold
   MakeBold();
}

private void MakeBold()
{
   // Change the TextBox to a bold version of the form's font
   textBox1.Font = new Font(this.Font, FontStyle.Bold);
}

private void Form1_FontChanged(object sender, System.EventArgs e)
{
   // If the TextBox is already bold and the form's font changes,
   // change the TextBox to a bold version of the new form font
   if (textBox1.Font.Style == FontStyle.Bold)
   {
      MakeBold();
   }
}

Однако при локализации приложения на определенных языках полужирный шрифт может выглядеть плохо. Если такая проблема существует, локализаторам необходимо предоставить возможность переключения шрифта с полужирного на обычный. Так как локализаторы обычно не являются разработчиками и имеют доступ только к файлам ресурсов, но не к исходному коду, этот параметр необходимо задавать в файлах ресурсов. Для этого свойству Bold необходимо присвоить значение true. Это приведет к записи параметра шрифта в файлы ресурсов, где локализаторы смогут изменять его. Затем после метода InitializeComponent следует написать код для сброса шрифта в шрифт формы, но с использованием стиля шрифта, указанного в файле ресурсов.

TextBox1.Font = New System.Drawing.Font(Me.Font, TextBox1.Font.Style)
textBox1.Font = new System.Drawing.Font(this.Font, textBox1.Font.Style);

См. также