• Viernes 29 de Marzo de 2024, 16:04

Autor Tema:  Validar TextBox solo numeros (c#)  (Leído 16928 veces)

rober_net

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Validar TextBox solo numeros (c#)
« en: Domingo 12 de Septiembre de 2010, 04:37 »
0
hola amigos necesito de su ayuda...estoy haciendo un formulario y necesito que en un textbox solo me permita ingresar numeros (del 1 al 50), no letras .. tenia entendido que lo podia hacer con el evento keypress, pero nose como hacerlo..
Muchas gracias desde ya.

morringos

  • Miembro activo
  • **
  • Mensajes: 65
  • Nacionalidad: 00
    • Ver Perfil
Re: Validar TextBox solo numeros (c#)
« Respuesta #1 en: Domingo 12 de Septiembre de 2010, 19:44 »
0
Bueno bro, desde luego que soy novato y encontré una forma de solucionar tu problema (obviamente no es tan óptimo el código) donde abajo te pongo el código:

Primero, puse la propiedad MaxLength del textBox1 a 2, así se evita que se escriban números mayores que 99

Código del evento KeyPress del textBox1:

Código: C#
  1.  
  2.  if (Char.IsDigit(e.KeyChar))
  3.             {
  4.                e.Handled = false;
  5.             }
  6.             else if (e.KeyChar == 'b')
  7.             {
  8.                 e.Handled = false;
  9.             }
  10.             else
  11.             {
  12.                 e.Handled = true;
  13.             }
  14.  
  15.  


Código del evento TextChanged del textBox1 (Cuando el textBox1 cambia):

Código: C#
  1.  
  2. if (textBox1.Text.Length == textBox1.MaxLength) //Si los dos dígitos aceptados están escritos
  3.             {
  4.                 if (Convert.ToInt32(textBox1.Text) < 0 || Convert.ToInt32(textBox1.Text) > 50)
  5.                 {
  6.                     this.Text = "ERROR"; //En caso de que el valor sea mayor que el indicado, el título del formuario se pone como ERROR
  7.                 }
  8.                 else
  9.                 {
  10.                     this.Text = textBox1.Text;//En caso de que el valor ingresado esté en el rango, el título del formulario se pone de acuerdo al valor ingresado
  11.                 }
  12.             }
  13.             else if (textBox1.Text.Length==1)//En caso de que cuando se pone el primer dígito
  14.             {
  15.                 if (textBox1.Text[0] == '0')//Si el dígito es 0, automáticamente lo borra y esto obliga a poner números del 1 en adelante
  16.                 {
  17.                     textBox1.Clear();
  18.                 }
  19.             }
  20.  
  21.  

Otra alternatica podría ser el control numericUpDown, con ese le indicas los rangos máximo de valores que aceptará el control y te evitas de tantas validaciones.

Bueno bro, como te dije, tal vés no es lo más óptimo, pero al menos funciona y es lo que pude encontrar como solución, debido a como te digo, soy novato todavía.
Aquí hay muy buenos programadores profesionales que de seguro ellos te puedan mostar un código más corto y óptimo, tales como ProfesorX y JuanK.


Saludos bro!;
Morringos!; ^_^