2010-12-03 17 views
95

En WinForms estoy usando un Label para mostrar diferentes mensajes como el éxito, el fracaso, etc.¿Cómo mantengo una etiqueta centrada en WinForms?

me gustaría centrar esa etiqueta en forma central. Quiero una solución que lo mantendrá centrado ya sea que haya solo una palabra o una oración completa en la etiqueta.

Respuesta

187

Conjunto Label 's AutoSize propiedad a False, TextAlign propiedad a MiddleCenter y Dock propiedad a Fill.

+0

gracias decyclone, funcionó. ¿puedes guiar por lo que hace Dock? – haansi

+3

Con la propiedad 'Control.Dock' (http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dock.aspx), puede acoplar (pegar) un control a un lado determinado del contenedor. Por ejemplo 'Left',' Top', 'Right' o' Bottom'. 'Fill' le dice al control que tome todo el espacio disponible en el contenedor. – decyclone

+0

¿Hay algún truco para hacer que el tamaño de la fuente se estire también? – Edmondo1984

8

Lo conseguirá con la configuración de la propiedad Anchor: None.

9

algo de contenido adicional menor para establecer mediante programación:

Label textLabel = new Label() { 
     AutoSize = false, 
     TextAlign = ContentAlignment.MiddleCenter, 
     Dock = DockStyle.None, 
     Left = 10, 
     Width = myDialog.Width - 10 
};    

Dockstyle y la alineación de contenido pueden diferir de sus necesidades. Por ejemplo, para una etiqueta simple en un formulario wpf, uso DockStyle.None.

5

Si no desea acoplar la etiqueta en toda el área disponible, simplemente configure el evento SizeChanged en lugar de TextChanged. Al cambiar cada letra, se cambiará la propiedad de ancho de la etiqueta, así como su texto, cuando la propiedad de autosize se establezca en True. Entonces, por cierto, puedes usar cualquier fórmula para mantener la etiqueta centrada en la forma.

private void lblReport_SizeChanged(object sender, EventArgs e) 
{ 
    lblReport.Left = (this.ClientSize.Width - lblReport.Size.Width)/2; 
} 
Cuestiones relacionadas