2011-09-02 88 views
5

我在更改应用程序字体时遇到以下异常,因为我在部分应用程序中使用了某些字体,而某些字体不支持它:如何检查字体是否支持特定样式

enter image description here

我使用字体对话框更改我的应用程序字体。我需要检查所选字体是否在分配给我的应用程序后支持删除样式

这样做的建议方法是什么?我知道我可以用这个风格创建一个字体并捕获异常,但是有没有更好的方法来做到这一点?

在此先感谢。


EDIT:用户选择一种字体,而不是necesary三振。在那一刻,我需要检查字体是否支持样式删除,因为我在我的应用程序的一部分中创建了一个删除字体。如果字体不支持删除样式,则不允许用户选择该字体。

+0

例外我所有你得到的。没有什么可担心的,这是例外。 –

回答

0

最后我使用了以下内容:

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

如果您使用的是标准Font类,那么你可以使用Font.Strikeout属性:

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

对不起,也许我没有正确解释我的问题。查看我的编辑 –

+0

@DanielPeñalba您可以为用户选择创建Font对象,并获取Property的值。如果它是'假',那么你必须禁止字体选择。 – VMAtm

+0

看到安德烈的答案,这就是我的意思。 –

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

对不起,也许我没有正确解释我的问题。查看我的编辑 –

相关问题