Pregunta

He establecido la propiedad MaxLength de un cuadro de texto en mi aplicación de formularios de Windows en 10

Estoy rellenando el cuadro de texto leyendo un archivo. Sin embargo, si una cadena de lectura que tiene más de 10 caracteres, el cuadro de texto aún se rellena. Pero cuando trato de ingresar manualmente una cadena, funciona bien (es decir, no permite ingresar más de 10 caracteres).

¿Por qué hay una diferencia entre estos dos comportamientos? ¿Cómo puedo rellenar mi cuadro de texto del archivo y seguir teniendo la propiedad MaxLength para que funcione?

Gracias, Viren

¿Fue útil?

Solución

De la TextBoxBase.MaxLengthProperty especificaciones:

  

En el código, puede establecer el valor de la propiedad Texto en un valor que tenga una longitud mayor que el valor especificado por la propiedad MaxLength. Esta propiedad solo afecta el texto ingresado en el control en tiempo de ejecución.

En otras palabras, debe limitar la cantidad de texto en el código al extraer de una fuente de datos.

Por ejemplo:

string text = "The quick blue smurf jumped over the brown fox.";
textBox1.Text = text.Substring( 0, textBox1.MaxLength );

Otros consejos

Nunca es prudente confiar completamente en la validación instantánea de valores, siempre debe validar el valor final también. Por ejemplo, he visto a personas que usan eventos de KeyUp / KeyDown / KeyPress con regularidad para no permitir varios caracteres, y luego olvido que las personas usan regularmente copiar y pegar (lo que niega la validación prevista).

Tendrás que limitarlo programáticamente. Así es simplemente la forma en que los navegadores tratan el HTML. Lo sentimos :(

Desafortunadamente, la especificación HTML no ofrece ninguna guía sobre este problema (que puedo encontrar), por lo que los fabricantes de navegadores se han conformado con este comportamiento.

http://www.w3.org/TR /html401/interact/forms.html#h-17.4

En el peor de los casos, podría intentar limitar sus datos a 10 caracteres cuando esté enlazando al cuadro de texto:

txtMyTextbox.Text = Left(myData, 10)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top