2010-10-21 5 views
5

Ahora aclaro que esta puede ser una pregunta duplicada de: Right-aligned labels in WinForms Pero ninguna de las respuestas me satisfizo.WinForms: alineación automática de la etiqueta de tamaño automático

el problema es muy simple:

tengo derecho etiqueta alineado con tamaño automático setted a verdadero. El comportamiento esperado es que cuando se aumenta el texto, la coordenada derecha permanezca sin cambios. Pero eso no es lo que sucede. La coordenada izquierda es la que permanece sin cambios.

Mi aplicación es un poco pequeña, así que no quiero comenzar a poner controles en los paneles, así que ... He intentado todas las soluciones que involucraban SOLAMENTE las propiedades de las etiquetas. El único que funcionó es configurar el autosize en falso y sobredimensionarlo. (Solución aceptada de la pregunta Nº1692383). ¡Pero es realmente feo! Realmente me gustaría evitar eso.

¿Alguna otra posible solución?

¡Gracias de antemano!

+0

por favor, consulte mi respuesta editada. La versión original no funcionó correctamente cuando se redimensionó el formulario. –

+0

Tahnks @adrift !!! No me había dado cuenta de que el primero no funcionaba. – Diego

Respuesta

7

Una solución sería la de capturar el margen derecho de la etiqueta en forma constructor, y en el caso de etiquetas SizeChanged, restablecer la ubicación basado en el margen derecho inicial, de la etiqueta actual Width y la etiqueta de los padres actuales Width.

Esto también asume que la etiqueta está anclada a la derecha para manejar el cambio de tamaño del formulario.

private readonly int _rightMargin; 

public Form1() 
{ 
    InitializeComponent(); 

    _rightMargin = label1.Parent.Width - label1.Right; 
} 

private void label1_SizeChanged(object sender, EventArgs e) 
{ 
    label1.Location = new Point(label1.Parent.Width - _rightMargin - label1.Width, label1.Top); 
} 
Cuestiones relacionadas