jueves, enero 19, 2006

C# .NET - Controlando las Teclas Pulsadas

Básicamente uno siempre busca validar las entradas de datos de algun sistema que desarrollemos, y mucho más aún si estos datos van a ser grabados en una Base de Datos o serviran como referencia a Datos Históricos más adelante, por ello en el Framework de .Net se implementaron algunas librerias con las características propias para poder manejar estos casos. Imaginemos que tenemos una caja de texto, en la que se pide ingresar la edad de alguna persona X, para luego calcular algún otro dato usando esa edad ingresada, que pasaría si en esa caja de texto se nos va una letra, definitivamente nos traería uno que otro problemilla que aunque no grave si muy molesto, de la misma forma en una caja donde solo queremos poner letras, o mucho más aún, si tenemos un computador en el que la configuración regional de los decimales usa el "." y nosotros queremos usar siempre la "," definitivamente podemos manejar eso, y aquí expongo los 3 casos que más se usan, espero les sirva de algo. Este codigo muestra una caja de texto(txtSoloNumeros) en donde solo se pueden ingresar numeros y usar la tecla que nos permite borrar las entradas (Back)

private void txtSoloNumeros_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsNumber(e.KeyChar.ToString().Substring(e.KeyChar.ToString().Length - 1,1),0)==false)
{
if( e.KeyChar == Convert.ToChar(Keys.Back) )
{e.Handled=false;}
else{e.Handled=true;}
}
}

Aqui es lo contrario, se permiten la entrada de cualquier caracter, menos uno numérico

private void txtNoNumeros_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsNumber(e.KeyChar.ToString().Substring(e.KeyChar.ToString().Length - 1,1),0)==true)
{
if( e.KeyChar == Convert.ToChar(Keys.Back) )
{e.Handled=false;}
else{e.Handled=true;}
}
}

Y por último el hecho de pulsar una tecla y remplazarla por otra, va de esta manera.

private void txtConvierteCaracteres_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsNumber(e.KeyChar.ToString().Substring(e.KeyChar.ToString().Length - 1,1),0)==true)
{
e.Handled=true;
SendKeys.Send("*");
}
if(e.KeyChar=='*')
{
e.Handled=true;
SendKeys.Send("/");
}
}

Bueno se debe notar, que tenemos 2 casos, si es un numero convertirlo en "*", o el caso específico de si es "*" convertirlo en "/".

Antes de todo, debemos claro agregar el Evento "KeyPress" a cada una de las cajas de texto que vamos a usar

this.caja2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.caja2_KeyPress);

3 Comments:

Blogger NeCuDeCo said...

Amigo mio permiteme decirte que te hackee. Se q te esforzaste en no permitir que nadie copie tu codigo con un simple click derecho ( bueno tampoco tenes un monton de codigo que digamos, no ? ) pero como no me agradan las prohibiciones ...

aca el link sobre como anular tu querida protección. Que lo distrufes ...


Hackeando a Jack



http://necudeco.blogsome.com

7:28 PM  
Blogger Jac| said...

=) jeje cuando no tu, pero mi buen amigo no me esforce nada y tampoco era una prohibicion, solo trate de dar un ejmplo de como usar esos scripts, es tan obvio que para los que tamos inmersos en este mundo sabemos que no hay nada prohibido en el mundo de los cilcks y anticlicks.

12:29 PM  
Anonymous Anónimo said...

this.caja2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.caja2_KeyPress);

Donde se agrega esto???


Gracias

5:04 AM  

Publicar un comentario

<< Home