2011-09-02 15 views
5

Ricevo la seguente eccezione quando si modifica il tipo di carattere dell'applicazione, perché utilizzo una parte della mia applicazione e alcuni caratteri non lo supportano:Come verificare se un font supporta uno stile specifico

enter image description here

Ho cambiato il carattere dell'applicazione utilizzando una finestra di dialogo. Devo specificare se il font selezionato supporta lo stile di blocco dopo averlo assegnato alla mia applicazione.

Qual è il modo consigliato per farlo? So che potrei creare un font con lo stile e catturare l'eccezione, ma c'è un modo più elegante per farlo?

Grazie in anticipo.


EDIT: L'utente seleziona un tipo di carattere, non barrato controlo. In quel momento ho bisogno di verificare se il font supporta lo strikeout di stile, perché creo un font di strikeout in una parte della mia applicazione. Se il carattere non supporta lo stile di esclusione, non consentirebbe all'utente di scegliere quel tipo di carattere.

+0

L'eccezione i s tutto quello che hai Niente di cui preoccuparsi, è eccezionale. –

risposta

0

Infine Ho usato il seguente:

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

Se si utilizza la classe standard Font, quindi è possibile utilizzare la proprietà Font.Strikeout:

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

Scusa, forse non ho spiegato correttamente la mia domanda. Vedere le mie modifiche –

+0

@Daniel Peñalba È possibile creare l'oggetto Font per la selezione Utente e ottenere il valore della proprietà. Se è 'false', devi proibire la selezione dei caratteri. – VMAtm

+0

Vedi la risposta di Andrei, qualcosa del genere è ciò che intendo. –

3

Aggiornato: (per riflettere aggiornamento nel post iniziale):

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

Scusa, forse non ho spiegato correttamente la mia domanda. Vedi le mie modifiche –

Problemi correlati