Solo Letras en los Textbox C# - Windows Forms

En el desarrollo de aplicaciones en C#, es común encontrarse con la necesidad de restringir la entrada de datos en TextBox a solo letras. Este artículo abordará estrategias efectivas para llevar a cabo esta validación, proporcionando código práctico y consejos esenciales para mejorar la calidad de tu aplicación.

Solo Letras en C#


1. Validación en Tiempo Real: Evento Keypress

La primera técnica consiste en implementar una validación en tiempo real al suscribirse al evento KeyPress. De esta manera, puedes filtrar las entradas y permitir solo letras. Aquí te presento un fragmento de código que puedes integrar:
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;
}
}
Este código asegura que solo se ingresen letras y permite el uso de teclas de control como borrar o retroceso.

2. Utilización de Expresiones Regulares: Verificación de Texto Completo

Otra estrategia poderosa implica el uso de expresiones regulares para verificar el contenido completo del TextBox. El siguiente ejemplo muestra cómo implementar esta validación:

private void TextBox_TextChanged(object sender, EventArgs e)
{
    string input = TextBox.Text;
    if (!Regex.IsMatch(input, "^[a-zA-Z]+$"))
    {
        MessageBox.Show("Por favor, ingrese solo letras.", "Error de Validación", MessageBoxButtons.OK, MessageBoxIcon.Error);
        TextBox.Text = ""; // Limpiar el contenido no válido
    }
}

Mejora la Experiencia del Usuario con Validación de Entrada de Datos

Implementar la validación para ingresar solo letras en TextBox en C# no solo mejora la integridad de los datos sino que también proporciona una experiencia más intuitiva y libre de errores para los usuarios. Al integrar estas estrategias en tu código, garantizas una aplicación robusta y confiable. ¡Explora estas opciones y eleva la calidad de tu desarrollo en C#!

Leer Más:



Ejecutando el código anterior se genera un mensaje como lo muestra la siguiente imagen:


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)


Share:

16 comentarios:

  1. Gracias dude!! buen post!!

    ResponderEliminar
  2. Anó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.

    ResponderEliminar
  3. compañero excelente michas gracias Dios te bendiga

    ResponderEliminar
  4. y si necesito un textBox con solo letras y darle enter y pasar al siguiente textBox, como puedo hacerlo?

    ResponderEliminar
  5. Hola 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:

    Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
    Text2.SetFocus
    End If
    End Sub

    Espero te sirva, hasta pronto.

    ResponderEliminar
  6. y si necesito validar sólo letras pero sin textBox?...
    es 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í?

    ResponderEliminar
  7. Anónimo puedes utilizar el siguiente ejemplo:

    //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.

    ResponderEliminar
  8. Y COMO PUEDO HACER PARA QUE ACEPTE ESPACION

    ResponderEliminar
  9. Hola Nestor, para que el código acepte espacios en el If debes preguntar por:

    (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.

    ResponderEliminar
  10. Si quisiera escribir en un textbox2 el numero de letras que me indique el textbox1..
    ejem...textbox1= 5
    textbox2= "perro"
    si escribimos mas de 5 letras...mostrar un mensaje de que solo se acepten 5 letras

    ResponderEliminar
  11. Anónimo puedes utilizar el siguiente ejemplo, recuerda agregar 2 TextBox y el evento TextChanged del segundo TextBox2 así:

    private 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.

    ResponderEliminar
  12. 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
    espero me des la ayuda en eso

    ResponderEliminar
  13. Gracias por el código, podrás ayudarme para poder colocar acentos " ´ " en las letras.

    ResponderEliminar
  14. Este 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?......
    Agradecería mucho de su ayuda:....

    ResponderEliminar
  15. Ana Carpio podrías validar incluyendo este código:

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.Control == true)
    {
    MessageBox.Show("Cortar y/o pegar estas desabilitados");
    }
    }

    ResponderEliminar
  16. 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