2011-09-02 9 views
5

Recibo la siguiente excepción al cambiar la fuente de mi aplicación, porque utilizo un signo en una parte de la aplicación y algunas fuentes no lo admiten:Cómo comprobar si una fuente admite un estilo específico

enter image description here

Cambio la fuente de la aplicación utilizando un cuadro de diálogo de fuentes. Necesito comprobar si la fuente seleccionada admite el estilo de tachado después de asignarlo a mi aplicación.

¿Cuál es la forma recomendada de hacerlo? Sé que podría crear una fuente con el estilo y atrapar la excepción, pero ¿hay una forma más elegante de hacerlo?

Gracias de antemano.


EDITAR: El usuario selecciona un tipo de letra, no ponches NECESARIO. En ese momento, necesito verificar si la fuente admite el estilo tachado, porque creo una letra tachada en una parte de mi aplicación. Si la fuente no es compatible con el estilo tachado, no permitiría al usuario elegir esa fuente.

+0

La excepción i es todo lo que tienes Nada de qué preocuparse, es excepcional. –

Respuesta

0

último Utilicé lo siguiente:

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

Si está utilizando el estándar de la clase Font, entonces usted puede utilizar el Font.Strikeout propiedad:

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

Lo siento, quizás no explique mi pregunta correctamente. Ver mis ediciones –

+0

@Daniel Peñalba Puede crear objetos de fuentes para la selección de usuario y obtener el valor de la propiedad. Si es 'falso', entonces tiene que prohibir la selección de fuente. – VMAtm

+0

Ver la respuesta Andrei, algo así es lo que quiero decir. –

3

Actualizado: (para reflejar la actualización en el mensaje inicial):

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

Lo siento, quizás no explique mi pregunta correctamente. Ver mis ediciones –

Cuestiones relacionadas