.NET: Validar que introducimos números enteros en un TextBox (2ª parte), o como usar int.TryParse
Ayer veíamos como hacer que el TextBox admitiese sólo caracteres numéricos, pero… como bien nos indica Rafael Vargas en su comentario al post de ayer, se nos olvidó que, los chicus malos los hay por todas partes, y, aunque evitábamos el Ctrl-C Ctrl-V, no evitabamos el copiar-pegar que se realiza con el ratón, por lo que la TextBox podía contener caracteres alfanuméricos.
La solución viene por implementar el evento Validating del TextBox, utilizando para ello el método que aparece en la versión 2.0 de .NET FrameWork int.TryParse(string s, out int Result), el cual, Convierte la representación en forma de cadena de un número en el entero de 32 bits con signo equivalente. Un valor devuelto indica si la operación tuvo éxito. Usease, si lo que contiene el parámetro de tipo string s es un número, te devuelve dicho número en el parámetro de salida Result, en cambio, si no es un número, el parámetro de salido Result devolverá cero. A todo esto, int.TryParse() en un método estático de tipo booleano que devuelve true si s se convirtió correctamente; en caso contrario, false.
Resumiendo, en mi clase Utilidades, me he creado un método estático al que llamo desde el evento Validating del TextBox. El código del método estático es el siguiente:
public static string EsNumero(string MiTexto)
{
int Result = 0;
if(!int.TryParse(MiTexto, out Result))
MiTexto = "";
return MiTexto;
}
Ala, a seguir currando gañanes, que ya es viernes, iujuuuuu!!!! ;)
By Rafa Vargas, September 28, 2007 @ 11:59 am
Bien bien, pero aún hay una solución mucho mejor: encapsular la solución dentro de un TextBox y que sea un componente más (y así nos ahorramos el código extra).
La solución, la tienes en mi blog (para que no trabajes más), que como indicas: es viernes.
http://rafavargas.wordpress.com/2007/09/28/textbox-numerico/
Un saludo.
By Ander, September 28, 2007 @ 1:02 pm
Ya he leido tu post, y ya lo he estado probando un poco, más que nada, como añadir este componente a la lista de objetos del diseñador. Así que me crearé un proyecto aparte de tipo dll con mis objetos.
Como te digo en tu blog, la camiseta ya la tienes ganada con creces ;)
By NASH, June 15, 2009 @ 7:51 pm
Saludos estava verificando algo que me ayudara pero tu aportacion es justo lo que necesitava hejejjejje
Muchas gracias es mas facil validar y en una linea hejejej, estuve usando expreciones regulares y la verdad me fue mas facil como tu ejemplo, la verdad no lo necesito para un text box, lo uso para un metodo en particular el cual valida ete tipo de datos hejejejej
Muchas gracias.