Como hacer que un Textbox Solo acepte Números en C#
El siguiente código ejemplo valida que se digite solo números en un Textbox en C#, para esto se agrega al evento KeyPress de la caja de texto:private void txtCaracter_KeyPress(object sender, KeyPressEventArgs e) { if (!(char.IsNumber(e.KeyChar)) && (e.KeyChar != (char)Keys.Back)) { MessageBox.Show("Solo se permiten numeros", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); e.Handled = true; return; } }Leer Más:
- Validar Solo Letras en C#
- Como Validar Solo Letras en Textbox
- Como Usar Eventos OnBlur, OnFocus, OnChange
- Import CSV File Into SQL
El código anterior permite además, digitar la tecla BackSpace como lo indica la siguiente la linea:
e.KeyChar != (char)Keys.Back)
Valida Solo Números en C#
Al digitar una tecla diferente a un número, se envía un mensaje (se podría comentar la linea del mensaje para que no se muestre) como lo muestra la siguiente imagen:Digitación correcta:
Si quieren conocer esta validación, pero controlando que solo digiten letras, pueden visitar el articulo Solo letras en los Textbox C# - Windows Forms.
Hola, me parece una buena opción para controlar lo que entra por un TextBox, pero al leer el post me ha venido a la cabeza el NumericUpDown que nos permite ingresar un número, incluso incrementarlo o decrementarlo a golpe de click, además de poder controlar su rango mediante sus propiedades. Personalmente prefiero este último, pero claro el TexBox permite una mayor amplitud de entrada pero a mayor riesgo de que esa entrada no sea valida y la debas controlar.
ResponderEliminarPara gustos, colores.
Buen aporte Aarón, totalmente de acuerdo.
ResponderEliminarGracias!, me sirvió.
ResponderEliminaramigo ami no me funciono ayudaa.!!
ResponderEliminarHola Hector, tu código lo estas realizando en visual studio C# ? para proyectos Windows Forms en el evento KeyPress de una caja de texto, me cuentas.
ResponderEliminarSolo quiero validar los ceros y ubos este codigo sirve para eso?????
ResponderEliminarHola anónimo, necesitas que no se permita escribir ceros (0)?
ResponderEliminarBuen aporte
ResponderEliminarBuenos días,
ResponderEliminarAlvaro gracias por tu comentarios, hasta pronto.
Muchas Gracias Por Tu Ayuda :3
ResponderEliminarMuchas gracias por este post, la verdad me haz salvado la vida :3
ResponderEliminargracias de nuevo amigo :D
Muchas gracias
ResponderEliminarHola, muchas gracias, me ha servido. PEro lo que paasa es que ahora ya no me deja pegar!! :D Cómo se podria resolver eso?. he copiado unos numeros pero quiero pegar en el textbox pero no me deja. Alguna idea¿?
ResponderEliminarHola Juan carlos, te envío una Url que te puede servir mucho. http://stackoverflow.com/questions/25135505/detecting-ctrlv-on-key-press
ResponderEliminarPienso que debes cambiar del evento KeyPress al evento KeyDown todas las validaciones de Solo números junto y agregarle la que permita solo Pegar.
Si tienes dudas me cuentas.
Saludos.
Muchas gracias me sirvió bastante, adjunto el mismo código con una variación para que acepte el punto, por si la cantidad a recibir no es un número estero, saludos
ResponderEliminarif (!(char.IsNumber(e.KeyChar)) && (e.KeyChar != (char)Keys.Back) && !(e.KeyChar == ('.')))
{
MessageBox.Show("Solo se permiten numeros", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
e.Handled = true;
return;
}
Atte. Gerson S.
Gracias Gerson por tu aporte.!!!
ResponderEliminarN me funciona
ResponderEliminarhola amigos, aquí les traigo el mismo código pero modificado para que acepte presionar "Enter" o "Intro"
ResponderEliminarExplico para que entiendan un poco mejor
// Evento KeyPress de un TextBox
private void txtTlf_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(char.IsNumber(e.KeyChar)) && // Si No Es Numero
(e.KeyChar != (char)Keys.Back) && // y Si No es Backspace(Borrar)
(e.KeyChar != (char)Keys.Enter) && // y si no es Enter(Entrar)
(e.KeyChar != (char)Keys.Return) && // y si no es Return(Entrar o Intro del Teclado Numerico)
(e.KeyChar != (char)Keys.Delete)) // y si no es Delete(Del o Suprimir, Supr)
{ // Entonces
// Lanzamos Mensaje diciendo que solo permite numeros
MessageBox.Show("Solo se permiten numeros en el Campo Telefono", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
// Habilitamos el Handled = true para que no escriba nada si no son las teclas validadas
e.Handled = true;
//Retornamos
return;
} // entonces si las teclas son las permitidas Validamos
else if (e.KeyChar == (char)Keys.Enter) // si se presiona Enter
{
SendKeys.Send("{TAB}"); // mandamos un Tab para ir al siguiene campo
}
else if (e.KeyChar == (char)Keys.Return) // si se presiona Return (Intro del Teclado Numerico)
{
SendKeys.Send("{TAB}"); // mandamos un Tab para ir al siguiene campo
}
}
Espero les Funcione..
Gracias..
#dedosenelcodigo
Gracias Jorge, muy buen código. saludos
ResponderEliminarExcelente me sirvio de mucho
ResponderEliminarcomo hacer un condicional para que el usuario no coloque el cero al inicio de la cadena
ResponderEliminar