Pregunta

Estoy concatenando una cadena que a veces es lo suficientemente larga para que no encaje en un control de etiqueta. ¿Cómo puedo hacer que se desplace automáticamente al lado del derecho para que siempre vea el final de la cadena?

¿Fue útil?

Solución

Aunque estoy seguro de que hay formas de hacerlo, tengo que preguntar, ¿por qué? Creo que se vería y / o funcionaría muy mal y probablemente confundiría al usuario.

¿Por qué no recortar el texto con una elipse (...) al final y mostrar una información sobre herramientas en la etiqueta?

using System.Windows.Forms;

var label = new Label();
label.AutoSize = false;
label.AutoEllipsis = true;
label.Text = "This text will be too long to display all together.";

var labelToolTip = new ToolTip();
labelToolTip.SetToolTip(label, label.Text);

Ahora la información sobre herramientas mostrará el texto completo cuando el usuario se desplace sobre él. Dado que el texto en la etiqueta se truncará y terminará en una elipse, el usuario debe saber que debe desplazarse para obtener más información (generalmente de manera estándar).

Otros consejos

El TextAlign le permite especificar la alineación. Si lo justifica a la derecha con esto, el lado derecho del texto siempre estará visible. Sin embargo, si desea que esté justificado a la izquierda o al centro y aún tiene el comportamiento que describe, sospecho que tendrá que realizar alguna medición utilizando Graphics.MeasureString para determinar si el texto se ajusta y cambiar la alineación de forma dinámica.

AFAIK no hay forma de desplazar una etiqueta. Un truco sería usar un TextBox (solo lectura, desactivar el borde) y luego usar SendKeys.Send () para mover el cursor al final del texto. Algo como:

        textBox1.Focus();
        SendKeys.SendWait("{END}");

Para que el texto no se muestre como seleccionado, tuve que cambiar su posición en el orden de tabulación (de modo que no era 1), pero puede que no sea un problema en tu caso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top