c# - validaciones - validar textbox en wpf
C#ValidaciĆ³n de entrada para un cuadro de texto: flotar (2)
Esta tarea supuestamente fácil me dio un poco de dolor de cabeza. Simplemente quiero que el usuario ingrese cualquier texto que tenga float.TryParse
en float.TryParse
en un control TextBox.
Podría usar un TextBox normal y revisar el texto en algún btnOK_Click, pero obviamente esto es poco convincente. Además, hay un buen control incorporado MaskedTextBox, pero no pude configurar su máscara para que sea igual a float.TryParse
. Además, parece verificar la validez solo cuando ocurre un cambio de enfoque.
Excavar en la red trajo algunas ideas interesantes, pero ninguna tan agradable como me gustaría.
Cómo resolviste este problema? ¿Extrañé simplemente una solución obvia, o tengo que implementar esta funcionalidad yo mismo?
Soy consciente de algunos hilos similares en SO, pero no había una solución factible para encontrar.
Actualización: Sí, WinForms.
Tenga cuidado al validar y validar a falso. Es posible que descubras que, a menos que ingreses datos válidos, no puedes alejar el foco del cuadro de texto, que es un gran problema de usabilidad.
TryParse()
esto simplemente probando un TryParse()
en LostFocus
y si el TryParse falla, coloreo el fondo del cuadro de texto con un tinte rojizo para que sea obvio que algo anda mal.
Editar
Bueno, eso hace que sea mucho más fácil ... Simplemente agregue un Validating
eventos de Validating
a su cuadro de texto y haga el TryParse
en el código detrás. Si no es válido, solicite al usuario como tal.
La validación se activará cuando el usuario termine de escribir y mueva el foco desde el cuadro de texto, por lo que si necesita realizar una verificación sobre la marcha, puede manejar el cambio de texto o los controladores KeyPress / KeyUp Event en su lugar
Original
¿Esto es en asp.net o winforms / wpf?
Si es asp.net, podría usar una combinación de RegularExpressionValidator
(para tener en cuenta la separación de coma, 1 punto decimal, etc.) y un RangeValidator
para establecer los valores mínimo / máximo para un flotante.
Aparte de eso, la única forma de garantizarlo sería envolver el cuadro de texto en un panel de actualización, pegar un CustomServerValidator en él, y en la función de validación del servidor, hacer un TryParse
en el valor TextBox.Text
, si tiene éxito, ES VÁLIDO, si falla, NO ES VÁLIDO