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
Pasan los años y sigue dando frutos este aporte, muchas gracias, me funciono perfecto
Muchas Gracias Alexander. Me ha sido una valiosa Ayuda.
Te amamos, Mil años buscando esto Muchísimas gracias. Eres Genial
hola quisiera saber cual es el codigo que voy a poner en el MainForm.Designer.cs ya que depues de poner
private void TxtPruebaNumero_KeyPress(object sender, KeyPressEventArgs e)
en el mainform.cs me tira un error en el MainForm.Designer.cs..
Hola amigo, muchisimas gracias por aportar tu codigo xDD! a sido de mucha ayuda para programar mi proyecto!! Dios te siga bendiciendo xDD! y de nuevo mil gracias 😀
yo estoy trabajando en Microsoft Visual Studio 2005
Modificando un poquillo el código de esta entrada, es así como sólo permito ingresar números y letras (va dentro del evento KeyPress del textBox):
if (!Char.IsDigit(e.KeyChar) && !Char.IsLetter(e.KeyChar))
{
e.KeyChar = (char)0;
e.Handled = false;
}
me funciono gracias hermano. lo utilice en visual.net 205
pura vida grs por el aporte!!
MUCHAS GRACIAS AMIGOS POR GRANDÍSIMOS APORTES, 😀
de la programación que dio el amigo » eltiopegas » podemos eliminar la fila del centro quedando de la siguiente manera: (así me funcionó muy bien, recuerden que es C# y es en un textbox en el evento Keypress)
private void textBox5_KeyPress(object sender, KeyPressEventArgs e)
{
String Aceptados = «0123456789.,» +Convert.ToChar(8);
if (Aceptados.Contains(«»+e.KeyChar))
{
e.Handled=false;
}
else
{
e.Handled = true;
}
}
Es para que el textbox solo admita números, la coma y el punto, nada de letras.
Mi amigo muchas gracias por tu codigo esta muy bien me sirvio de lujo en un proyecto =D!!!
Gracias !! 🙂
http://www.elnumerodoce.wordpress.com
perfecto funciona al maximo gracias por tu aporte 🙂
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))
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());
}
Que va gracias carlnal…
MIL GRACIAS, FUE DE MUCHA AYUDA….
Hay número y números. Están los decimales, negativos, etc que no son aceptados por la validación.
Saludos
Gracias por poner este tipo de informacion, ayudas mucho … ya estaba un poco perdido de como hacer esto…
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;
tu pagina me ha servido de gran ayuda.. muchas 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!!
exxcelente me ayudo bastante, gracias…
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
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.
Buenisimo vieja, gracias.
Suerte…
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.
Estas en lo cierto, gracias por tu ayuda
el problema es con números decimales y unidades de miles : 23,234.45
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 🙂
Hola… gracias por tu truco
tenes razon todo debe ir validado para que sea un buen programa.
Saludos