En esta ocasión les traigo un truco que nos permite digitar Solo letras en un TextBox.
El siguiente código, se agrega al evento KeyPress de la caja de texto:
private void txtCaracter_KeyPress(object sender, KeyPressEventArgs e) { if (!(char.IsLetter(e.KeyChar)) && (e.KeyChar != (char)Keys.Back)) { MessageBox.Show("Solo se permiten letras", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); e.Handled = true; return; } }El código anterior permite además, digitar la tecla BackSpace como lo indica la siguiente la linea:
e.KeyChar != (char)Keys.Back)
La diferencia de este post, con el articulo Solo Números en los Textbox C# - Windows Forms es el metodo IsLetter que nos permite controlar que solo se digiten letras.
Leer Más:
Digitación correcta:
Está validación no solo se puede aplicar sobre un control Textbox, lo podemos ver en proyectos de tipo consola, como se puede ver en el siguiente ejemplo. Parte II: Solo Letras C# - Windows Forms (Consola)
Gracias dude!! buen post!!
ResponderEliminarAnónimo, que bueno que te halla servido el post, si te llega a interesar, la validación también se encuentra para solo números en Windows Form. Hasta pronto.
ResponderEliminarcompañero excelente michas gracias Dios te bendiga
ResponderEliminary si necesito un textBox con solo letras y darle enter y pasar al siguiente textBox, como puedo hacerlo?
ResponderEliminarHola diego un textbox de solo letras te puede servir este post, para el Enter, solo crear en la caja de texto el evento KeyPress asi:
ResponderEliminarPrivate Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
Text2.SetFocus
End If
End Sub
Espero te sirva, hasta pronto.
y si necesito validar sólo letras pero sin textBox?...
ResponderEliminares decir...sólo en la consola y cuando corra y me pida ingresar el dato y ponga un número o una cadena de números me diga "Sólo se aceptan letras" o algo así?
Anónimo puedes utilizar el siguiente ejemplo:
ResponderEliminar//Método
static bool IsLetters(string sCaracteres)
{
foreach (char ch in sCaracteres)
{
if (!Char.IsLetter(ch) && ch != 32)
{
return false;
}
}
return true;
}
//Método de inicio:
static void Main(string[] args)
{
string sCaracteres = string.Empty;
Console.WriteLine("Escriba un texto a validar");
sCaracteres = Console.ReadLine();
//ValidaSoloLetras();
if (IsLetters(sCaracteres))
{
Console.WriteLine("Los caracteres son letras.");
}
else
{
Console.WriteLine("Solo se aceptan letras");
}
Console.ReadLine();
}
Si te sirve me cuentas, hasta pronto.
Y COMO PUEDO HACER PARA QUE ACEPTE ESPACION
ResponderEliminarHola Nestor, para que el código acepte espacios en el If debes preguntar por:
ResponderEliminar(e.KeyChar != (char)Keys.Space)
Quedando algo así:
if (!(char.IsLetter(e.KeyChar)) && (e.KeyChar != (char)Keys.Back) && (e.KeyChar != (char)Keys.Space))
{
MessageBox.Show("Solo se permiten Letras", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
e.Handled = true;
return;
}
Espero te sirva, cualquier duda me cuentas, saludos.
Si quisiera escribir en un textbox2 el numero de letras que me indique el textbox1..
ResponderEliminarejem...textbox1= 5
textbox2= "perro"
si escribimos mas de 5 letras...mostrar un mensaje de que solo se acepten 5 letras
Anónimo puedes utilizar el siguiente ejemplo, recuerda agregar 2 TextBox y el evento TextChanged del segundo TextBox2 así:
ResponderEliminarprivate void textBox2_TextChanged(object sender, EventArgs e)
{
if (textBox2.Text.Length > Convert.ToInt32(textBox1.Text))
{
MessageBox.Show("Solo se aceptan " + textBox1.Text.ToString() + " caracteres.");
textBox2.Text = textBox2.Text.Substring(0, textBox2.Text.Length -1 );
}
}
Espero te sirva.
Hola amigo tengo una pregunta esta todo perfecto me funciona solo queria preguntar como haria para controlar todo eso en varios textBox no se si me explico es que se me hace demasiado tener q poner en todos los textBox el mismo codigo si se lo podia hacer para que varios textBox el mismo codigo
ResponderEliminarespero me des la ayuda en eso
Gracias por el código, podrás ayudarme para poder colocar acentos " ´ " en las letras.
ResponderEliminarEste código es perfecto pero la validación no me sirve porque al pegar texto que contiene letras, números, apostrofes y signos y los acepta. ¿Como puedo hacerle para que no pegue el texto en el textBox si este contiene números, apostrofes y signos?......
ResponderEliminarAgradecería mucho de su ayuda:....
Ana Carpio podrías validar incluyendo este código:
ResponderEliminarprivate void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control == true)
{
MessageBox.Show("Cortar y/o pegar estas desabilitados");
}
}
Deseo que en un textbox solo acepte letras y numeros. Validar para que no se puedan escribir apostrofes, signos ni caracteres. Ademas de que no se puedan escribir que tampoco se puedan pegar con contrl+v ni con el mouse, textos que contengan todo lo que ya mencione.
ResponderEliminar