visual studio multilinea control c# .net winforms label

c# - multilinea - label visual studio 2015



Etiqueta crecer de derecha a izquierda (5)

Tengo una etiqueta en mi formulario que está a la derecha del formulario. Esta etiqueta carga un texto dinámico.

A veces, el texto que carga es demasiado largo y el texto cruza el borde del formulario, es decir, parte del texto está fuera de la forma.

Quiero hacer que la etiqueta crezca de derecha a izquierda en lugar de ir de izquierda a derecha. ¿Cómo logro esto?


Lo solucioné estableciendo la etiqueta

Propiedad AutoSize en falso

TextAlign a MiddleRight ,

un ancla a la derecha .

Tenga en cuenta que el tamaño de la etiqueta en sí mismo no aumenta con el texto, pero puede manejarlo dándole suficiente ancho para ajustarse al contenido. El efecto visual es el mismo.


Mi problema aquí fue que mi etiqueta estaba en un panel, y todo lo que hice no funcionaba.

Lo que hice fue colocar la etiqueta en un control TableLayoutPanel y establecer la propiedad RightToLeft de RightToLeft en True ; esto hizo el truco.


No puede hacer que "crezca de derecha a izquierda", pero puede asignar su propiedad Left para que no salga del formulario:

label1.Text = "some dynamic text here..."; if (label1.Right > this.Width) label1.Left = this.Width - label1.Width;

Si el diseño lo permite, también puede duplicar su altura para que el texto abarque dos líneas.


Puede usar TableLayoutPanel u otro control de contenedor compatible, pero en su lugar establecer la propiedad RightToLeft para el conjunto de contenedores Dock = "Right" para la etiqueta

Establecer la propiedad RightToLeft no siempre da los resultados esperados ya que para algunos formatos de cadena la cadena se modifica cambiando el orden de las palabras.


puedes escribirlo:

public enum Leftorright { left,right} private Leftorright _LeftToRight = Leftorright.left; public Leftorright LeftToRight { get { return _LeftToRight; } set { _LeftToRight = value; } } protected override void OnTextChanged(EventArgs e) { int oldWidth; oldWidth = this.Width; base.OnTextChanged(e); if (LeftToRight == Leftorright.right && this.Width != oldWidth) { this.Left = this.Left - this.Width + oldWidth; } }