2011-09-02 15 views
5

मुझे अपना एप्लिकेशन फ़ॉन्ट बदलते समय निम्नलिखित अपवाद मिल रहा है, क्योंकि मैं अपने एप्लिकेशन के एक हिस्से में स्ट्राइक आउट का उपयोग करता हूं, और कुछ फोंट इसका समर्थन नहीं करते हैं:यह जांचने के लिए कि कोई फ़ॉन्ट किसी विशिष्ट शैली का समर्थन करता है

enter image description here

मैं फ़ॉन्ट संवाद का उपयोग करके अपना एप्लिकेशन फ़ॉन्ट बदलता हूं। मुझे की आवश्यकता है कि चयनित फ़ॉन्ट मेरे आवेदन को सौंपने के बाद स्ट्राइकआउट शैली का समर्थन करता है या नहीं।

ऐसा करने का अनुशंसित तरीका क्या है? मुझे पता है कि मैं शैली के साथ एक फ़ॉन्ट बना सकता हूं और अपवाद पकड़ सकता हूं, लेकिन क्या ऐसा करने का एक और शानदार तरीका है?

अग्रिम धन्यवाद।


संपादित: उपयोगकर्ता एक फ़ॉन्ट, नहीं आवश्यक स्ट्राइक आउट चयन करता है। उस पल में मुझे यह जांचने की ज़रूरत है कि फ़ॉन्ट शैली स्ट्राइकआउट का समर्थन करता है, क्योंकि मैं अपने आवेदन के एक हिस्से में स्ट्राइकआउट फ़ॉन्ट बनाता हूं। यदि फ़ॉन्ट स्ट्राइकआउट शैली का समर्थन नहीं करता है तो उपयोगकर्ता उस फ़ॉन्ट को चुनने की अनुमति नहीं देगा।

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

अपवाद I आप सब मिला है। चिंता करने के लिए कुछ भी नहीं, यह असाधारण है। –

उत्तर

0

आप मानक Font वर्ग का उपयोग कर रहे हैं, तो आप Font.Strikeout संपत्ति का उपयोग कर सकते मैंने निम्नलिखित का उपयोग किया:

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

क्षमा करें, शायद मैंने अपने प्रश्न को सही तरीके से समझाया नहीं है। मेरे संपादन देखें –

+0

@ Daniel Peñalba आप उपयोगकर्ता के चयन के लिए फ़ॉन्ट ऑब्जेक्ट बना सकते हैं, और संपत्ति का मूल्य प्राप्त कर सकते हैं। यदि यह 'झूठा' है, तो आपको फ़ॉन्ट सेलेसीटन को रोकना होगा। – 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

क्षमा करें, शायद मैंने अपने प्रश्न को सही तरीके से समझाया नहीं है। मेरे संपादन देखें –

संबंधित मुद्दे

 संबंधित मुद्दे