Existe un control inteligente de cuadro de texto (WinForms) que puede mostrar una ruta dependiendo del ancho de la caja de texto. Por ejemplo, si la ruta es corta, mostrará la ruta completa (C: \ myfile.txt), pero si la ruta es larga, mostrará el inicio y el final (C: \ SomeFolder ... \ foo \ MyFile.txt) La longitud de los caracteres mostrados debe calcularse (dinámicamente) mediante el cuadro de texto utilizando su ancho. Cualquier sugerencia comercial o de código abierto es bienvenida. Muchas gracias.C# WinForms - Smart TextBox Control para formatear automáticamente la longitud de la ruta en función del ancho de la casilla de texto
6
A
Respuesta
15
Sí, es una capacidad incorporada del método TextRenderer.DrawText(). Una de sus sobrecargas acepta un argumento TextFormatFlags, puede pasar TextFormatFlags.PathEllipsis. Hacer esto para un TextBox no es apropiado, el usuario no puede editar razonablemente una ruta tan abreviada, no tendría idea de cuál podría ser la ruta original. Una etiqueta es el mejor control.
Agregue una nueva clase a su proyecto y pegue el código que se muestra a continuación. Compilar. Coloque el nuevo control desde la parte superior de la caja de herramientas en su formulario. No lo hagas muy pequeño.
using System;
using System.ComponentModel;
using System.Windows.Forms;
class PathLabel : Label {
[Browsable(false)]
public override bool AutoSize {
get { return base.AutoSize; }
set { base.AutoSize = false; }
}
protected override void OnPaint(PaintEventArgs e) {
TextFormatFlags flags = TextFormatFlags.Left | TextFormatFlags.PathEllipsis;
TextRenderer.DrawText(e.Graphics, this.Text, this.Font, this.ClientRectangle, this.ForeColor, flags);
}
}
Cuestiones relacionadas
- 1. C# WinForms Alineación vertical para TextBox, etc.
- 2. ¿Cómo calcular el ancho de UILabel en función de la longitud del texto?
- 3. enganchar por defecto el evento "Pegar" del control WinForms TextBox
- 4. Winforms Casilla de verificación Enfoque Problema si no se aplica texto en la casilla de verificación
- 5. C# WinForms NumericUpDown de control (la eliminación de la caja de incremento)
- 6. Custom Caret para WinForms TextBox
- 7. Mantener la ruta del control FileUpload después de la devolución
- 8. Configuración del ancho de la vista de texto en LinearLayout
- 9. cambiar la dirección del texto del cuadro de texto automáticamente
- 10. Watermark TextBox en WinForms
- 11. Control de casilla de verificación para la aplicación iOS
- 12. ¿Cómo obtener la altura del texto con ancho fijo y obtener la longitud del texto que cabe en un marco?
- 13. ¿Qué tan confiable es la propiedad MaxLength de TextBox-Control?
- 14. Longitud de sal del pez globo para la función Cripta()?
- 15. Autoresize textbox control verticalmente
- 16. Calcular la altura del texto en función del ancho y la fuente disponibles?
- 17. Determinar el tamaño de etiqueta en función de la cantidad de texto y el tamaño de fuente en Winforms/C#
- 18. Mostrar la jerarquía de control en el diseñador de WinForms
- 19. Función de Win32 para obtener la ruta a C: \ ProgramData
- 20. Longitud de la cadena que cabe en un ancho específico
- 21. Cómo determinar la longitud del texto en un UITextfield
- 22. ¿Importa la longitud del nombre variable para el rendimiento C#?
- 23. ¿Cómo puedo formatear el texto en un TextBox con datos?
- 24. determinar la longitud de la cadena de texto de DB2
- 25. Cómo determinar automáticamente la calidad del texto?
- 26. Winforms DataBind a la propiedad Visible del control
- 27. C# WinForms propiedades predeterminadas de control personalizado
- 28. WinForms: ¿Cómo verificar la cantidad mínima de caracteres en el cuadro de texto en C#?
- 29. Cómo redimensionar automáticamente el tamaño de la fuente para que se ajuste al alto/ancho del cuadro de texto?
- 30. Calcular la longitud de la ruta entre los nodos?
+1 Hans! ¡Esto es exactamente lo que estaba buscando! :) –
Esto es genial! Sin embargo, cuando configuro 'Graphics' como' SmoothingMode.AntiAlias', el TextRenderer no parece respetarlo. – petejamd