Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Usar en distintos textbox al llamar evento Keypress misma función

296 views
Skip to first unread message

Juanato

unread,
May 8, 2008, 8:02:23 AM5/8/08
to jua...@gmail.com
Hola a todos los forofos del C sharp:

Soy un programador Xbase que después de 13 años, tengo que
modernizarme. Estoy experimentando con c sharp, y tengo varias
necesidades para ahorrar código:


1º) Veo que podria usarse al llamar al mismo evento en varios textbox
a la misma función. Supongo que se podria sobreescribir el mismo
evento para permitirlo, pero no llego. Seria algo asi...


public void txtValidaTeclaPulsada(object sender,
System.Windows.Forms.KeyPressEventArgs e, int
nModo)
{
// Si se pulsa la tecla Intro, pasar al siguiente
//if( e.KeyChar == Convert.ToChar('\r') ){
if( e.KeyChar == '\r' ){
e.Handled = true;
// txtFecha.Focus();
}else if( e.KeyChar == '.' ){
// si se pulsa en el punto se convertirá en coma
e.Handled = true;
SendKeys.Send(",");
}
}

SI nModo es 0, hago una validación como número sin decimales
si es 1, hago numérico con decimales, pero altero . por ,
Si es 2, simplemente tengo en cuenta que si pulsa ESC, me salgo de la
edición del form

Alguien ha llegado a conseguir esto que pregunto ?


Gracias desde Córdoba, España

Alberto Poblacion

unread,
May 8, 2008, 8:13:11 AM5/8/08
to
"Juanato" <jua...@gmail.com> wrote in message
news:b44f2f5a-8ec4-4b45...@d45g2000hsc.googlegroups.com...

> 1º) Veo que podria usarse al llamar al mismo evento en varios textbox
> a la misma función. Supongo que se podria sobreescribir el mismo
> evento para permitirlo, pero no llego. Seria algo asi...
>
> public void txtValidaTeclaPulsada(object sender,
> System.Windows.Forms.KeyPressEventArgs e, int nModo)

Bueno, asi directamente, no.
Es lícito conectar una misma rutina de tratamiento de eventos con varios
controles, pero no le puedes cambiar los argumentos: tendría que tener
únicmente el "sender" y el "e", pero no puedes añadir nModo. El remedio
sería examinar el "sender" dentro de la rutina y a partir de él determinar
el nModo.
Otra alternativa sería que cada control tenga su propia rutina de
tratamiento del evento, y dentro de esa rutina se haga una llamada a la
rutina "común", pasándole el "sender" y el "e" y añadiendo en la llamada un
tercer parámetro para el nModo.


srellock

unread,
May 8, 2008, 9:06:10 AM5/8/08
to
Te cuento una posible solucion, no tengo mucha experiencia en C#, pero yo he
solucionado algo parecido utilizando la propiedad Tag.

Asigna a los TextBox.Tag el valor que quieras y luego haz algo parecido a
esto

switch (((System.Windows.Forms.TextBox)(sender)).Tag)
{
case 0 : // bla bla bla
break;
case 1 : // bla bla bla
break;
case 2 : // bla bla bla
break;
default : // bla bla bla
}

"Juanato" <jua...@gmail.com> escribió en el mensaje
news:b44f2f5a-8ec4-4b45...@d45g2000hsc.googlegroups.com...

Juanato

unread,
May 9, 2008, 2:59:24 AM5/9/08
to
Gracias, a los dos... con un mix de eso, puedo hacer lo que
buscaba.... eso del tag es muy util. De veras, es útil porque es
simple. Ahora pondré otra duda.....


On May 8, 3:06 pm, "srellock" <jmb_bo...@yahoo.es> wrote:
> Te cuento una posible solucion, no tengo mucha experiencia en C#, pero yo he
> solucionado algo parecido utilizando la propiedad Tag.
>
> Asigna a los TextBox.Tag el valor que quieras y luego haz algo parecido a
> esto
>
> switch (((System.Windows.Forms.TextBox)(sender)).Tag)
> {
> case 0 : // bla bla bla
> break;
> case 1 : // bla bla bla
> break;
> case 2 : // bla bla bla
> break;
> default : // bla bla bla
>
> }
>

> "Juanato" <juan...@gmail.com> escribió en el mensajenews:b44f2f5a-8ec4-4b45...@d45g2000hsc.googlegroups.com...

0 new messages