validar validaciones vacio texto solo permitir letras hacer espacios cajas blanco c# textbox floating-point validation maskedtextbox

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