Bien, pues varias veces me he topado con que tengo que hacer tareas muy parecidas desde distintos controles ante un mismo evento sobre cada uno de ellos. Esto me genera trozitos de codigo que cambian a veces muy poco uno de otro y dan "un mal aspecto" al código
. Pues, recordando lo que un amigo me comentaba que hacía: ún solo metodo el cual responda por lo eventos de un conjunto común de controles, decidi implementarlo y me esta sirviendo. Va algo asi: (no es nada del otro mundo, pero espero a alguien le sirva
)
Este ejemplo es el más didáctico y conciso, tan sencillo como el HelloWorld
. En un formulario donde deseas validar la identidad de un usuario, deseas tambien que si pulsas ENTER sobre cualquiera de las cajas (de nick o pass), llamar al metodo correspondiente al evento Click del boton validar.
PRIMERO: Agregamos un formulario, dos cajas de texto (txtNick, txtPass) y un boton btnValidar. Esto es fácil con el potente, usable, ligero y económico IDE para programar sobre sobre el Framework o Mono (obviamente no hablo de VisualStudio.Net xD, básicamente por las dos últimas características), es decir, SharpDevelop.
SEGUNDO: Programamos el evento Click del btnValidar, con algo como:
void BtnValidarClick(object sender, System.EventArgs e)
{
// Ese será nuestro supuesto super código de validación de usuario xD
MessageBox.Show("Bienvenido…!!!");
}
TERCERO: Crearemos el metodo que manejará los click en las cajas:
- object sender: es el control sobre el cual se ejecuta el evento.
- System.Windows.Forms.KeyPressEventArgs e: es el evento que se ejecuta sobre el "sender". Usaremos KeyPressEventArgs porque vamos a responder ante un enter con el metodo que creamos en [SEGUNDO].
- y porque BtnValidarClick(null,null). Le ponemos null, porque no nos interesa en el btnValidar trabajar con el control y su evento disparado, así que para no hacernos problemas, lo llamamos asi.
void MetodoEnterEnCajas(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar == 13) // es enter???
{
this.BtnValidarClick(null,null);
}
}
CUARTO: Por último, es cuestion de ir a la ventana Propiedades/Eventos, y elegir el KeyPress, desplegar el combo y elegir "MetodoEnterEnCajas" para cada una de las cajas.
Ahora, ya esta listo, escribes tu usuario, le das enter, y llama ya al evento click del boton. Igual si lo haces en la caja de contraseña. Primero, ahorraste 1 método, porque si programas el contenido de MetodoEnterEnCajas en cada caja, tendras tantos métodos como en cajas lo hayas puesto, y segundo, se ve mas ordenado. =)
Ahora, esto se puede usar para validaciones de varias cajas de texto, control de los click en un menu, etc. Espero les sirva.
Salu2.
PS: Repito, el ejemplo es excesivamente sencillo, pero considero las diversas aplicaciones que implica son escalables en sobremanera
.