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
















Hola… gracias por tu truco
tenes razon todo debe ir validado para que sea un buen programa.
Saludos
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
el problema es con números decimales y unidades de miles : 23,234.45
Estas en lo cierto, gracias por tu ayuda
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
¿y en carpeta está ese control?
Si te refieres a un control de terceros, entonces olvídalo y ubícate!
Saludos.
Jaja, es MaskedTextBox y viene en la framework.
Y si es cierto, gracias por el tip.
Buenisimo vieja, gracias.
Suerte…
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.
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
exxcelente me ayudo bastante, gracias…
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!!
tu pagina me ha servido de gran ayuda.. muchas gracias….
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;