2011-09-02 82 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

對不起,也許我沒有正確解釋我的問題。查看我的編輯 –

相關問題