Internationale Schriftarten in Windows Forms und Steuerelementen
Aktualisiert: November 2007
Für internationale Anwendungen sollte möglichst die automatische Schriftartauswahl verwendet werden. Automatische Schriftartauswahl bedeutet, dass das System bestimmt, zu welcher Schrift ein Zeichen gehört.
Verwenden der automatischen Schriftartauswahl
Legen Sie die Font-Eigenschaft für das Formular oder ein beliebiges anderes Element nicht fest, wenn Sie dieses Feature nutzen möchten. Die Anwendung greift in diesem Fall automatisch auf die Standardschrift des Systems zurück, die sich nach der Sprache richtet, in die das Betriebsystem lokalisiert wurde. Wenn die Anwendung ausgeführt wird, stellt das System automatisch die richtige Schrift für die im Betriebssystem ausgewählte Kultur bereit.
Es gibt jedoch eine Ausnahme zu der Regel, dass die Schrift nicht festgelegt wird. Sie betrifft die Änderung des Schriftschnitts. In einer Anwendung kommt sie dann zum Tragen, wenn der Benutzer auf eine Schaltfläche klickt, um Text in einem Textfeld in Fettschrift darzustellen. Dazu würden Sie eine Funktion schreiben, die auf der Grundlage der Formularschrift den Schriftschnitt des Textfelds in fett ändert. Diese Funktion muss unbedingt an zwei Stellen aufgerufen werden: im Click-Ereignishandler der Schaltfläche und im FontChanged-Ereignishandler. Wenn die Funktion nur im Click-Ereignishandler aufgerufen und die Schriftfamilie des gesamten Formulars durch anderen Code geändert wird, ändert sich das Textfeld nicht mit dem restlichen Formular.
' Visual Basic
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
// C#
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();
}
}
Beim Lokalisieren der Anwendung wird die Fettschrift jedoch in bestimmten Sprachen möglicherweise nur mangelhaft dargestellt. Wenn dies Probleme aufwirft, sollten die Lokalisierungsspezialisten die Möglichkeit haben, die Schrift von fett auf normalen Text umzuschalten. Da Lokalisierungsspezialisten in der Regel keine Entwickler sind und nur Zugriff auf die Ressourcendateien, jedoch nicht auf den Quellcode haben, muss diese Option in den Ressourcendateien festgelegt werden. Zu diesem Zweck würden Sie die Bold-Eigenschaft auf true festlegen. Dadurch wird die Schrifteinstellung in die Ressourcendateien geschrieben, wo sie von den Lokalisierungsspezialisten bearbeitet werden kann. Fügen Sie anschließend nach der InitializeComponent -Methode Code ein, der die Schriftart auf die Formularschrift zurücksetzt, dabei jedoch den in der Ressourcendatei festgelegten Schriftschnitt verwendet.
' Visual Basic
TextBox1.Font = New System.Drawing.Font(Me.Font, TextBox1.Font.Style)
// C#
textBox1.Font = new System.Drawing.Font(this.Font, textBox1.Font.Style);