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