2008-11-09 15 views
6

C#: ¿Cuál es la forma correcta de cambiar el estilo de fuente (subrayado) de una etiqueta en tiempo de ejecución?WinForms: ¿Cuál es la forma correcta de cambiar el estilo de fuente (subrayado) de una etiqueta en tiempo de ejecución?

Hasta ahora entiendo que si desea cambiar las propiedades relacionadas con la fuente en tiempo de ejecución de una etiqueta, principalmente todas las propiedades de fuente, que tendría que utilizar,

lblName.Font = new Font(... etc. etc. 

¿Existe un acceso directo a la anterior pero sólo asignar nada más que un nuevo estilo de fuente como FontStyle.Underline?

o

¿Tendría que proceder a utilizar el método de "nueva Fuente()" y asigne todos los campos, junto con él también acaba de subrayar mi sello?

+0

Es posible que desee especificar la ventana deseada que está utilizando (Winforms o WPF). –

Respuesta

0

Qué tal (estoy usando .Net Framework 2.0) Está bien así que esto funciona para una aplicación web. En una aplicación de formularios, es de solo lectura.

lblName.Font.Underline = true;

Aquí está la definición:

// 
    // Summary: 
    //  Gets or sets a value that indicates whether the font is underlined. 
    // 
    // Returns: 
    //  true if the font is underlined; otherwise, false. The default value is false. 
    [DefaultValue(false)] 
    [NotifyParentProperty(true)] 
    public bool Underline { get; set; } 
+0

No funcionará porque font.underline es una propiedad de solo lectura. –

+0

¿Estás seguro? Lo intenté antes de publicarlo y funcionó. Qué versión estás usando? – wonderchook

+0

Vaya, no importa. Esto funciona para un Web Ap, no uno de Windows. – wonderchook

1

recurrido a,

this.Font = new Fuente (this.Font, FontStyle.Underline);

Works for Win32 Forms.

+0

Eso fue todo lo que se me ocurrió. No creo que sea tan malo. – wonderchook

12

La forma en que lo hizo:

this.Font = new Font(this.Font, FontStyle.Underline); 

es correcta. La razón es que Font es un tipo sellado e inmutable (por diseño). Cuando se introdujo en .NET 1, esto parecía un poco extraño, pero con el énfasis de hoy en la programación funcional, concurrencia e inmutabilidad, este estilo se ve mucho más. Tal vez se hizo de esta manera ya que los controles heredan la fuente de su contenedor y el seguimiento de los cambios de propiedad de fuente individual sería más trabajo que el seguimiento de un cambio de fuente al por mayor.

1
//Bold. 
    label1.Font = new Font(label1.Font.Name, 12, FontStyle.Bold); 

//Bold With Underline. 
    label1.Font = new Font(label1.Font.Name, 12, FontStyle.Bold | FontStyle.Underline); 

//Bold with Underline with Italic. 
    label1.Font = new Font(label1.Font.Name, 12, FontStyle.Bold | FontStyle.Underline | FontStyle.Italic); 
Cuestiones relacionadas