Título: [Ayuda] Como hacer para validar una text box para q admita solo numeros Publicado por: estebankpo15 en 1 Febrero 2015, 21:57 pm Hola estoy haciendo un sistema de validaciones para un final de la facultad, la cosa es q tengo una txtbox donde solo se deben ingresar numeros y al precionar guardar tendria que validad que lo q ingrese sea un numero.
Tambien habia pensado en que la textbox solo se puedan escribir numeros. Alguien sabe alguna manera de solucionar esto? Título: Re: [Ayuda] Como hacer para validar una text box para q admita solo numeros Publicado por: Eleкtro en 2 Febrero 2015, 08:21 am Alguien sabe alguna manera de solucionar esto? Hay varías maneras. La primera manera, y también las más eficiente, sería reemplazar el uso de un TextBox para utilizar el control más adecuado a tu situación actual y así seguir buenas prácticas de programación, tienes 2 posibilidades y ambas sin mayores complicaciones: 1) Un control de tipo NumericUpDown para rangos numéricos (ej: 0 - 100). 2) Un control de tipo MaskedTextbox para máscaras numéricas (ej: nnn.nnn.nnn.nnn). Ahora bien, supongamos que por el motivo que sea prefieres omitir el consejo de arriba y seguir utilizando un TextBox, pues bien, soluciones: 1) Utilizar una expresión regular ("^\d+$") y evaluarla o utilizar los métodos de validación del Type Char, suscribiéndote al evento KeyPress para comprobar si el caracter es un número, pero esto sería una solución horrible ya que estariamos descuidando otros factores a tener en cuenta, de todas formas mostraré un ejemplo breve por si quieres ir a lo sencillo: Código
2) Cómo he dicho la solución anterior es horrible, ¿por qué?, por que para evitar completamente que se puede añadir "X" caracter en un TextBox corriente, debes tener varias cosas más en cuenta, como el menú contextual (Edit menu), los atajos de teclado Windows (System-wide Hotkeys), y la característica de soltar y arrastrar (Drag&Drop) en caso de que desees añadirle dicha funcionalidad. Así pues, otra manera que aportaría mayor eficiencia, libertad, y personalización, sería definir un set de caracteres permitidos, y cancelar la escritura del caracter en el evento KeyPress cuando dicho caracter no se encuentre dentro de los caracteres permitidos: Para ello he implementado el uso de dicha técnica desarrollando un user-control (el cual se puede mejorar en muchos sentidos, ya que no le puse demasiado empeño en la elaboración del código). Modo de empleo: Código
Source: Nota: Las características del menú contextual se pueden manejar también con los mensajes de Windows que procesa la ventana, WM_COPY, WM_CUT, y WM_PASTE, pero he preferido omitir la intercepción y el procesamiento de mensajes de Windows para no cargar más de la cuenta el user-control con operaciones innecesarias (y tambien porque como ya dije no le he puesto tanto empeño para su elaboración). Código
Saludos. Título: Re: [Ayuda] Como hacer para validar una text box para q admita solo numeros Publicado por: __Alvaro 2015__ en 6 Febrero 2015, 06:23 am Puedes utilizar la Función "IsNumeric", ejemplo:
Código
Saludos ::) Título: Re: [Ayuda] Como hacer para validar una text box para q admita solo numeros Publicado por: Eleкtro en 6 Febrero 2015, 07:04 am Puedes utilizar la Función "IsNumeric", ejemplo: Lo que sugieres son malas prácticas de programación, al utilizar un wrapper de VB6. ¿Has leido mi post?, arriba puse un ejemplo sencillo de como usar su equivalente en .Net, utilizando el método Char.IsNumber() Por otor lado, para comrprobar si un String es numérico, el equivalente de "IsNumeric" en .Net sería utilizar el método Parse/TryParse del Datatype específico, por ejemplo: Código
...Pero eso es algo innecesario al igual que la función IsNumeric, ya que la pregunta no requiere comprobar un String, sino un único Char. Este comentario es con la intención de orientar a aquellas personas que sugieren la utilización de la función IsNumeric, al igual que Left, Right, y todas esas cosas obsoletas, Porfavor, eviten su utilización. Saludos! Título: Re: [Ayuda] Como hacer para validar una text box para q admita solo numeros Publicado por: __Alvaro 2015__ en 6 Febrero 2015, 08:12 am Citar Lo que sugieres son malas prácticas de programación, al utilizar un wrapper de VB6. Eso hoy en día es una leyenda, antes si era cierto, por que el CLR de VB6 ejecutaba mucho código basura, posteriormente se desarrollo (por así decirlo, .NET), y se determino, que un "wrapper" siendo un objeto a diferencia de un dato primitivo te brinda métodos que son de gran utilidad, para el manejo de primitivos. Por esta razón, es que se utilizan esta y otras funciones en la gran mayoría de los lenguajes, sin considerarlos "deprecated". Igual estoy a favor de que se brinden alternativas, y admiro tu esmerada respuesta Elektro. Citar ...Pero eso es algo innecesario al igual que la función IsNumeric, ya que la pregunta no requiere comprobar un String, sino un único Char. El evento de escucha "KeyPress" no siempre funciona bien. Saludos. Título: Re: [Ayuda] Como hacer para validar una text box para q admita solo numeros Publicado por: luis456 en 6 Febrero 2015, 08:26 am Yo lo solucione de esta manera espero te sirva
Código
luis Título: Re: [Ayuda] Como hacer para validar una text box para q admita solo numeros Publicado por: Eleкtro en 6 Febrero 2015, 10:49 am Eso hoy en día es una leyenda, antes si era cierto, por que el CLR de VB6 ejecutaba mucho código basura, posteriormente se desarrollo (por así decirlo, .NET), y se determino, que un "wrapper" siendo un objeto a diferencia de un dato primitivo te brinda métodos que son de gran utilidad, para el manejo de primitivos. Por esta razón, es que se utilizan esta y otras funciones en la gran mayoría de los lenguajes, sin considerarlos "deprecated". No soy una persona de afirmar leyendas, ya que no es ninguna leyenda, es tal y como es; la razón de que Microsoft decidiese desarrollar ese namespace fue con la finalidad de que a los desarrolladores del antiguo VB6 les fuera más comodo actualizarse a VB.Net, hallando así los mismos métodos que utilizaban en el antiguo VB6 al sentirse familiriazados con éstos, un motivo comprensible, pero eso no significa que lo correcto sea usarlos, ni que deban ser usados. Obviamente al denominar como "obsoleto" los miembros de ese namespace no lo digo porque esté escrito en VB6, ya que es todo código .Net, y algunas de las llamadas de los métodos del namespace Microsoft.VisualBasic son simplemente wrappers de funcionalidades de otros métodos existentes de la librería de classes de .Net Framework, lo que podemos denominar "puro código .Net", pero otras muchas NO lo son, son "puro código basura". Ya que para casi todos los métodos/funciones del namespace VisualBasic, existen versiones mucho más robustas en el resto de la librería de classes de .Net Framework. Un ejemplo de esto sería la función "Val", comparándola con la función "TryParse" de un Datatype específico. Los métodos/funciones del namespace VisualBasic usan técnicas consideradas deprecadas por el propio Microsoft (bueno, y por "la industria de la programación"), es decir, malas prácticas de programación , como por ejemplo el uso del GOTO y los Labels al proporcionar una estructura insegura al código, para no dejarme nada en el tintero, esto es solo un ejemplo de dichas malas prácticas, y es algo que obviamente también se utiliza en el namespace System (lo nombro al ser el namespace que usaré para la siguiente comparación de abajo), pero con una menor frecuencia en al relación de veces usada * cantitad de miembros, siendo 155 veces en el namespace VisualBasic en 179 archivos desamblados, es decir, cerca del 87% de las classes utilizan esta mala práctica, y 915 veces en el namespace System en 1.681 archivos desamblados, alrededor de un 54% de las classes, pero vuelvo a recordar que solo era un ejemplo, no nos fijemos solo en este aspecto, ya que hay otras cosas del namespace VisualBasic que son "basura". Y por esos motivos no es lo más conveniente usar esos wrappers. Te mostraré algo, haciendo uso de la técnica Reflection, estas son las instrucciones de la función "Val" del namespace Microsoft.VisualBasic, (omitiendo las instrucciones de varios métodos más como ChrW, etc, para no hacer más largo este post) Código
Y estas son las de la función "IsNumeric" del mismo namespace: Código
Mientras que esto son las instrucciones de la función "Double.TryParse" dentro del namespace System: Código
Espero que se pueda entender la diferencia, y lo que denomino robustez ...aparte de lo que ya he comentado sobre ello. Doy este debate por finalizado para no desviar todavía más el tema principal. Saludos! Título: Re: [Ayuda] Como hacer para validar una text box para q admita solo numeros Publicado por: __Alvaro 2015__ en 6 Febrero 2015, 17:21 pm Hola,
Citar Espero que se pueda entender la diferencia, y lo que denomino robustez ...aparte de lo que ya he comentado sobre ello. Si es mas robusto, pero también es mucho mas pesado, y gracias a esa metodología de no optimizar mas en en velocidad y ahorro de código, las plataformas Windows se han vuelto toscas, lentas y evidentemente sobrecargadas, por ello Linux gana mas y mas usuarios día a día. Acordaremos no estar de acuerdo, en todo, así no se hace spam. Saludos. Título: Re: [Ayuda] Como hacer para validar una text box para q admita solo numeros Publicado por: nevachana en 6 Febrero 2015, 17:27 pm No sé en que lenguaje estás pero es muy sencillo ^^
creas una lista con los caracteres no deseados: Código después en el botón donde hagas la acción añades una condicional. Código
|