2009-06-16 3 views
3

私はwinformsアプリケーションにSegoe UIを使用しています。フォントの逆コンパチブル

XPでは、このフォントは存在せず、代わりに私のアプリでVerdanaを使用したいと考えています。

これを達成する最良の方法は何ですか。

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

答えて

3

ネイティブの外観を実現するために、デフォルト(システム)フォントを使用することが常に優れている:あなたは、自動的にフォームのフォントを継承しませんコントロールに問題がある場合、フォームはそのコントロールのすべてを持っている場合、このコードを呼び出します。だからVistaはデフォルトのフォントとして 'Sergoe UI'を使い、XPはこれに「Tahoma」を使っています(Verdanaではなく)。デフォルトのダイアログフォントを使用するには、SystemFontsクラスを使用してください:

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

はこのようなものです。

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

...しかし、あなたのアプリケーションのすべてのフォームとコントロールについて、自動的にどうしますか?レイアウトがまだ正しいことをどうやって確認しますか? –

+0

あなたができることはFormから派生し、派生クラスを使用することです。派生したフォームのコンストラクタでは、GetUIFontメソッドを呼び出してフォームのフォントを設定すると、それが自動化されます。レイアウトに関しては、フォントサイズを変更すると自動的にフォームが自動的に調整されるのを見てきました。あなたはおそらくそのもので遊ばなければならないでしょうし、問題があればいつでもここで助けを求めることができます。 ;) – jasonh

0

スタートフォームから導出に関する部分を含めJasonHのソリューション、と:あなたが欲しい