2009-06-16 6 views
3

J'utilise Segoe UI pour mon application winforms.Incompatibilité arrière de polices

Sur XP, cette police n'existe pas et je voudrais que mon utilisation de l'application Verdana à la place.

Quelle est la meilleure façon d'y parvenir.

Répondre

3

Il est toujours préférable d'utiliser la police par défaut (système) pour obtenir apparence native . Donc Vista utilise 'Sergoe UI' comme police par défaut, et XP utilise 'Tahoma' pour cela (pas 'Verdana'). Pour obtenir par défaut de dialogue classe SystemFonts d'utilisation de la police:

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

Qu'est-ce que vous voulez est quelque chose comme ceci:

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

... mais comment voulez-vous que automatiquement, pour toutes les formes et de contrôle dans votre application? Comment vous assurez-vous que la mise en page est toujours correcte? etc. etc. –

+0

Ce que vous pouvez faire est dériver de Form et ensuite utiliser votre classe dérivée. Dans le constructeur de votre formulaire dérivé, vous pouvez appeler la méthode GetUIFont pour définir la police du formulaire, puis cela le rendra automatique. En ce qui concerne la mise en page, j'ai toujours vu mes formulaires s'ajuster automatiquement lorsque je change la taille de la police. Vous devrez probablement jouer avec celui-ci et si vous avez des problèmes, vous pouvez toujours demander de l'aide ici. ;) – jasonh

0

Commencez avec la solution de JasonH, y compris la partie au sujet provenant du formulaire. Si vous avez des problèmes avec les contrôles qui ne héritent automatiquement de la police du formulaire, appelez ce code lorsque votre formulaire a tous ses contrôles:

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