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;
}
}