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

24 01 2008

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


Acciones

Información

14 respuestas

1 02 2008
Violeta

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

2 02 2008
Alexander Jiménez

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 :-)

15 07 2008
Johnny

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

25 07 2008
mariana jaramillo

Estas en lo cierto, gracias por tu ayuda

28 08 2008
Francisco

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

10 10 2009
Mario

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

Saludos.

10 10 2009
Mario

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

8 10 2008
fer

Buenisimo vieja, gracias.
Suerte…

22 11 2008
pyro

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.

5 12 2008
javier

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

6 02 2009
Jose

exxcelente me ayudo bastante, gracias…

14 03 2009
Juan E

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!!

27 05 2009
Yadhira87

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

7 08 2009
eltiopegas

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;

Deja un comentario