2011-02-08 38 views
15

Un formulario con una etiqueta y un botón 'Opciones'. Al hacer clic en el botón se abre un nuevo formulario con 2 botones de radio 'Font1' y 'Font2', y dos botones 'Aplicar' y 'Cancelar'. Al seleccionar uno de los botones de opción y hacer clic en "Aplicar", la etiqueta del primer formulario cambiará la fuente. El problema es cómo cambiar la fuente desde, digamos, Tahoma a Arial o a cualquier otra fuente de la etiqueta.C# Cómo cambiar la fuente de una etiqueta

Opciones de formato de código para el botón de aplicar, que si se ha hecho clic volverá DialogResult.OK == true y cambiar la fuente de la etiqueta de la primera forma:

private void btnApply_Click(object sender, EventArgs e) 
{ 
    if (radioFont1.Checked) 
    { 
     mainForm.lblName.Font.Name = "Arial"; 'wrong attempt 
    } 
    this.DialogResult = DialogResult.OK; 
} 

Declaración de la etiqueta de la primera forma tan que sea visible a segunda forma:

public static Label lblName = new Label(); 

...

private void mainForm_Load(object sender, EventArgs e) 
{ 
    lblName = lblBarName; 
} 

Respuesta

31

Font.Name, Font.XYZProperty, etc, son de sólo lectura como Font es un objeto inmutable, por lo que es necesario que especifique una nueva Font objeto para reemplazarlo:

mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size); 

Compruebe el constructor de la clase Font para más opciones.

+0

fuente 'Arial' no lo hace estilo de soporte 'Regular'. Qué significa eso? – TheEnd

+0

La fuente en su totalidad es inmutable; no solo la propiedad Name –

+0

@ Aaron - Dije 'Font.XYZProperty' para inferir todas las propiedades. Olvidé la palabra para describirlo, así que gracias por recordarme :). – GenericTypeTea

8

No se puede cambiar una fuente una vez que ha creado - por lo que necesita para crear una nueva:

mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size); 
+0

Gracias por tomarse el tiempo para responder a mi pregunta. – TheEnd

4

Es necesario crear una nueva fuente

mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size); 
+0

Gracias por tomarse el tiempo para responder a mi pregunta. – TheEnd

Cuestiones relacionadas