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

08/05/2008 - 14:02 por Juanato | Informe spam
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('') ){
if( e.KeyChar == '' ){
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

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
08/05/2008 - 14:13 | Informe spam
"Juanato" wrote in message
news:
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.
Respuesta Responder a este mensaje
#2 srellock
08/05/2008 - 15:06 | Informe spam
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" escribió en el mensaje
news:
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('') ){
if( e.KeyChar == '' ){
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
Respuesta Responder a este mensaje
#3 Juanato
09/05/2008 - 08:59 | Informe spam
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" 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" escribió en el mensajenews:
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('') ){
if( e.KeyChar == '' ){
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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida