Inicio > Todas las Categorias > Truco: Solo Numeros en los Textboxt (Windows Forms) – VB y CSharp

Truco: Solo Numeros en los Textboxt (Windows Forms) – VB y CSharp

Hay ocaciones que en nuestras aplicaciones debemos controlar lo que el USUARIO deberia escribir en los TextBox… recuerden que esas personitas son experto para hacer que nuestras aplicaciones den un error y mas en los campos que solo debe ir NUMERO en ves de texto muy util en los ID o Codigos utilizados en las tablasde nuestras Base de Datos… por ello aqui les dejo este pequeño truquillo.

Por cierto para que funcione deben codificar el evento KeyPress del TextBox.

En Visual Basic:

   1: Private Sub txtPruebaNumero_KeyPress(ByVal sender As Object, _
   2:                            ByVal e As System.Windows.Forms.KeyPressEventArgs) _
   3:                            Handles txtPruebaNumero.KeyPress
   4:
   5:  If Char.IsDigit(e.KeyChar) Then
   6:       e.Handled = False
   7:   ElseIf Char.IsControl(e.KeyChar) Then
   8:       e.Handled = False
   9:   ElseIf Char.IsSeparator(e.KeyChar) Then
  10:       e.Handled = False
  11:   Else
  12:       e.Handled = True
  13:   End If
  14: End Sub
  15:

En Visual C#:

   1: private void TxtPruebaNumero_KeyPress(object sender, KeyPressEventArgs e)
   2: {
   3:     if (Char.IsDigit(e.KeyChar))
   4:     {
   5:         e.Handled = false;
   6:     }
   7:     else if (Char.IsControl(e.KeyChar))
   8:     {
   9:         e.Handled = false;
  10:     }
  11:     else if (Char.IsSeparator(e.KeyChar))
  12:     {
  13:         e.Handled = false;
  14:     }
  15:     else
  16:     {
  17:         e.Handled = true;
  18:     }
  19: }

La diferencia entre este codigo para solo numero con el de solo texto (que tambien esta publicado aqui) es que solo cambia en el comando de IsLetter por IsDigit

Categorías:Todas las Categorias Etiquetas: , ,
  1. Violeta
    1 febrero 2008 a las 6:03 PM | #1

    Hola… gracias por tu truco
    tenes razon todo debe ir validado para que sea un buen programa.
    Saludos

  2. 2 febrero 2008 a las 7:26 PM | #2

    De nada

    Eso es correcto mientras mas se tenga el control de nuestras aplicaciones mejor… de esa forma garantizamos que nuestras aplicaciones puedan ser bien recomendadas ante otros clientes :-)

  3. Johnny
    15 julio 2008 a las 5:47 PM | #3

    el problema es con números decimales y unidades de miles : 23,234.45

  4. mariana jaramillo
    25 julio 2008 a las 12:13 PM | #4

    Estas en lo cierto, gracias por tu ayuda

  5. Francisco
    28 agosto 2008 a las 10:26 AM | #5

    Hola amigos, no se por que la gente quiere inventar el agua tibia, existe un control denominado MastedTextBox, al cual se le puede asignar varios comportamientos. Pruebenlo y se daran cuenta

    • Mario
      10 octubre 2009 a las 2:20 PM | #6

      ¿y en carpeta está ese control?
      Si te refieres a un control de terceros, entonces olvídalo y ubícate!

      Saludos.

    • Mario
      10 octubre 2009 a las 2:22 PM | #7

      Jaja, es MaskedTextBox y viene en la framework.
      Y si es cierto, gracias por el tip.

  6. fer
    8 octubre 2008 a las 4:19 PM | #8

    Buenisimo vieja, gracias.
    Suerte…

  7. pyro
    22 noviembre 2008 a las 5:13 PM | #9

    Dim numeros() As Char = {“1″, “2″, “3″, “4″, “5″, “6″, “7″, “8″, “9″, “0″}

    Private Sub txtCuadro_KeyPress(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    Handles txtCuadro.KeyPress

    If Array.IndexOf(numeros, e.KeyChar) >= 0 Then
    e.Handled = False
    Else
    e.Handled = True
    End If

    Pues a mi me sirvio este código, porque al añadirle un par de elementos al arreglo se puede habilitar un par de teclas mas, como el ‘-’ o ‘+’, o ‘.’

    Saludos y felicidades.

  8. javier
    5 diciembre 2008 a las 12:17 AM | #10

    nesesito saber como funciona esta sentencia de codigo,
    osea si me funciona, pero no se como funciona,
    me gustaria ke me dijeran, linea por linea
    gracias
    y esta muy bueno el codigo

  9. Jose
    6 febrero 2009 a las 1:09 PM | #11

    exxcelente me ayudo bastante, gracias…

  10. Juan E
    14 marzo 2009 a las 11:16 AM | #12

    Saludos,

    Excelente codigo, he estado tratando :3 de hacer alguna funcion parecida y habia fallado, he encontrado varias formas por google de como controlar que solo entren un tipo de dato pero este ha sido el mejor!! muy bueno!!

  11. Yadhira87
    27 mayo 2009 a las 10:00 AM | #13

    tu pagina me ha servido de gran ayuda.. muchas gracias….

  12. eltiopegas
    7 agosto 2009 a las 3:46 AM | #14

    Para los que esten interesados en textbox números decimales en C# este código
    hay que ponerlo en el evento KeyPress:

    String Aceptados = “0123456789.,”+Convert.ToChar(8);
    if (e.KeyChar == ‘.’) e.KeyChar = ‘,’;
    if(Aceptados.Contains(“”+e.KeyChar))e.Handled=false;else e.Handled = true;

  13. 30 junio 2010 a las 5:24 PM | #15

    Gracias por poner este tipo de informacion, ayudas mucho … ya estaba un poco perdido de como hacer esto…

    Gracias

  14. 9 agosto 2010 a las 3:14 AM | #16

    Hay número y números. Están los decimales, negativos, etc que no son aceptados por la validación.
    Saludos

  15. LUIS JAVIER
    16 septiembre 2010 a las 10:18 AM | #17

    MIL GRACIAS, FUE DE MUCHA AYUDA….

  16. mgifil
    24 septiembre 2010 a las 1:57 PM | #18

    Que va gracias carlnal…

  17. Pedro
    6 octubre 2010 a las 10:44 PM | #19

    mmm quisiera saber si se puede hacer en modo consola
    Ejm:
    int num
    Console.WriteLine(“ingrese numero menor que 5″);
    num = int.Parse(Console.ReadLine()); error
    while (esc5)// oviamente que si escribo una letra sale
    {
    Console.WriteLine(“Reeingrese Numero”);
    esc = int.Parse(Console.ReadLine());
    }

  18. locofresh
    26 mayo 2011 a las 8:47 AM | #20

    Holas tambien podrían probar utilizando este código en el evento keypress del control, con esto solo te permite ingresar digitos y permite la tecla backspace.

    e.Handled = !(char.IsDigit(e.KeyChar) || ((int)(e.KeyChar) == 8))

  19. Anamerys
    2 junio 2011 a las 10:55 PM | #21

    perfecto funciona al maximo gracias por tu aporte :)

  1. Aún no hay trackbacks

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.

Únete a otros 27 seguidores