2011-09-02 7 views
5

アプリケーションフォントを変更するときに次の例外が発生します。アプリケーションの一部で取り消し線が使用され、一部のフォントではサポートされないためです。フォントが特定のスタイルをサポートしているかどうかを確認する方法

enter image description here

フォントダイアログを使用してアプリケーションのフォントを変更します。 選択したフォントが私のアプリケーションに割り当てられた後に、打ち消しスタイルをサポートしているかどうかを確認する必要があります。

これを行うにはどのような方法が良いですか?私はスタイルでフォントを作成して例外をキャッチすることができますが、それを行うもっとエレガントな方法はありますか?

ありがとうございます。


EDIT:ユーザーがフォント、ないnecesary三振を選択します。その瞬間、アプリケーションの一部に三角形のフォントを作成するため、フォントがスタイルの三角形をサポートしているかどうかを確認する必要があります。フォントが取り消しスタイルをサポートしていない場合、ユーザーはそのフォントを選択できません。

+0

例外iあなたが持っているものすべて。心配することはありませんが、それは例外的です。 –

答えて

0

私は以下を使用した:

private bool SupportStrikeout(Font font) 
    { 
     try 
     { 
      using (Font strikeout = new Font(font, FontStyle.Strikeout)) 
      { 
       return true; 
      } 
     } 
     catch (ArgumentException) 
     { 
      return false; 
     } 
    } 
0

あなたは、あなたがFont.Strikeoutプロパティを使用することができ、標準Fontクラスを使用している場合:

更新
//Gets a value that indicates whether this Font specifies a horizontal line through the font. 
public bool Strikeout { get; } 
+0

申し訳ありませんが、私は正しく質問を説明していない可能性があります。私の編集を参照してください –

+0

@DanielPeñalbaUser selectのFontオブジェクトを作成し、Propertyの値を取得することができます。それが 'false'の場合は、フォントセレクションを禁止する必要があります。 – VMAtm

+0

Andreiの答えを見てください。私の言うことです。 –

3

(初期の記事で更新を反映するために):最後に

InstalledFontCollection ifc = new InstalledFontCollection(); 
for (int i = 0; i < ifc.Families.Length; i++) 
    { 
     if (ifc.Families[i].IsStyleAvailable(FontStyle.StrikeOut)) 
     { 
      //add particular font with this family to your "font selector" 
     } 
    } 
+0

申し訳ありませんが、多分私は正しく自分の質問を説明していない。私の編集を見る –

関連する問題