Pregunta

Estoy tratando de hacer mi propio control para .NET usando VB y tengo problemas para lograr lo que quiero hacer. De hecho, estoy haciendo un control que hereda de la clase de cuadro de texto y la única modificación que estoy tratando de hacer es que si el control está visiblemente lleno, el usuario no puede escribir más. Entonces:

  • Las barras de desplazamiento nunca deberían aparecer.
  • El TextBox extendido puede ser multilínea o de una sola línea.
  • El TextBox extendido puede tener diferentes fuentes y tamaños de fuente.

En este momento, la técnica que estoy usando es graphics.measurestring para obtener un sizeF que contenga el ancho y el alto de mi cadena para compararlo con el alto y el ancho de mi control de cuadro de texto. Todo esto en el evento KeyDown (no sé si es la mejor solución). Puedo lograr que funcione bien para el ancho, pero parece que no puedo calcular la altura en un cuadro de texto de varias líneas. Si alguien alguna vez ha trabajado con estas cosas, necesitaría alguna explicación sobre cómo debería hacerse. Gracias.

¿Fue útil?

Solución

El problema es su tercer requisito:

The extended TextBox may have different fonts and font sizes. 

Lo que esto significa es que tendrá que determinar qué tan alto es cada línea por qué caracteres en la línea tienen el tamaño de fuente más grande, y para saber eso, también deberá saber qué caracteres hay en cada línea. Se pone peor, porque (sorprendentemente) diferentes fuentes pueden tener diferentes alturas dado el mismo tamaño de punto. Todo eso podría funcionar, si no fuera por el hecho de que cada carácter en una fuente espaciada proporcionalmente tiene un ancho diferente.

Y si tiene la intención de admitir superíndices y subíndices ...

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