2009-06-16 10 views
3

Ich benutze Segoe UI für meine Winforms-Anwendung.Schrift rückwärts Inkompatibilität

XP ist diese Schrift nicht vorhanden und ich möchte, dass meine App stattdessen Verdana verwendet.

Was ist der beste Weg, das zu erreichen.

Antwort

3

Es ist immer besser Standard zu verwenden (System) font native Look zu erzielen . Daher verwendet Vista "Sergoe UI" als Standardschriftart, und XP verwendet hierfür "Tahoma" (nicht "Verdana"). Um die Standarddialogschriftart zu erhalten, verwenden Sie die SystemFonts Klasse:

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

Was Sie wollen, ist so etwas wie dieses:

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

... aber wie machen Sie das automatisch, für jede Form und Kontrolle in Ihrer Anwendung? Wie stellen Sie sicher, dass das Layout immer noch korrekt ist? etc. etc. –

+0

Sie können von Form ableiten und dann Ihre abgeleitete Klasse verwenden. Im Konstruktor für Ihr abgeleitetes Formular könnten Sie die GetUIFont-Methode aufrufen, um die Schriftart des Formulars festzulegen, und dann würde dies automatisch erfolgen. Was das Layout betrifft, habe ich immer gesehen, dass sich meine Formulare automatisch anpassen, wenn ich die Schriftgröße ändere. Wahrscheinlich musst du damit herumspielen und wenn du Probleme hast, kannst du hier immer um Hilfe bitten. ;) – jasonh

0

Beginnen Sie mit JaSoNh-Lösung, einschließlich des Teils etwa von Form abzuleiten. Wenn Sie Probleme mit Kontrollen haben, dass die Form der Schriftart nicht automatisch erben, rufen Sie diesen Code, wenn das Formular alle seine Kontrollen hat:

foreach (Control ctl in this.Controls) 
{ 
    ctl.Font = GetUIFont(); 
}