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
CSharp, Trucos, VB

















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;
Gracias por poner este tipo de informacion, ayudas mucho … ya estaba un poco perdido de como hacer esto…
Gracias
Hay número y números. Están los decimales, negativos, etc que no son aceptados por la validación.
Saludos
MIL GRACIAS, FUE DE MUCHA AYUDA….
Que va gracias carlnal…
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());
}
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))
perfecto funciona al maximo gracias por tu aporte