Social Icons

twitterfacebookgoogle pluslinkedinrss feedemail

Pages, oficial

lunes, 16 de abril de 2012

TextBox que acepta solo números y restricción de caracteres

Muy útil para la validación  o simplemente restringir las entradas de datos en los formularios.
En esta oportunidad veremos la restricción de caracteres en un Control TextBox, para esto hacemos uso del Evento KeyPress como vemos a continuación:




En este ejemplo usamos y tres controles TextBox  uno que acepta  entrada de solo números , otro de solo letras, y por ultimo caracteres definidos por el desarrollador.


El código Fuente:

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        
        private void txtNumeros_KeyPress(object sender, KeyPressEventArgs e)
        {
                        
            if (!Char.IsNumber(e.KeyChar) && e.KeyChar != (char)8)
            {

                e.Handled = true;

            }
        }


        private void txtLetras_KeyPress(object sender, KeyPressEventArgs e)
        {
               
            if (!Char.IsLetter(e.KeyChar) && e.KeyChar != (char)8)
            {
               
                e.Handled = true;
            
            }
        }

        private void txtPersonalizado_KeyPress(object sender, KeyPressEventArgs e)
        {
            string cadena = "12345xyz" + (char)8;

            if (!cadena.Contains(e.KeyChar))
            {
            
             e.Handled = true;

            }

        }
    }

Explicación el evento captura el carácter cuando se presiona el teclado,  el metodo verifica si el caracter  cumple la regla  si no es asi no el evento se controla, de esat forma se bloquea el ingreso de caracteres , en parte condicional vemos la siguiente expresión: e.KeyChar != (char)8 , como se controla los caracteres generados por el teclado el  Backspace debe ser permitido para poder borrar los caracteres introducidos y esta expresión condicional nos permite esta funcionalidad.

Tambien se puede usar el mismo metodo por omiscion  como vemos a continuacion

 private void txtPersonalizado_KeyPress(object sender, KeyPressEventArgs e)
        {
            string cadena = "\{}[]" + (char)8;

            if (cadena.Contains(e.KeyChar))
            {
            
             e.Handled = true;

            }

        }

por ejemplo en este caso se podrán ingresar todos los caracteres menos los siguientes:   \{}[]  la diferencia de este método es la condición que no es negada.