Hola, pongo esta respuesta aquí, porque creo que viene al caso, aunque en realidad no le solucionará la vida a nadie ya que más bien es anecdótica
ültimamente estoy aprendiendo algo de C# y lo cierto es que tiene algunas características muy interesantes y, entre ellas está su implementación de eventos que es lo qua aquí se comenta. El caso es que en C# no puedes asignar un valor a un evento, sino que debes añadir o quitar valores, de manera que, al lanzarse dicho evento se ejecutaran todos los provedimientos "añadidos". Esto és muy, pero que muy potente, ya que en el ejemplo que comentamos, sería algo tan simple como lo siguiente
Código:
/*en el create del form1, por ejemplo*/
form2.button1.onClick += metodo1;
form2.button1.onClick += metodo2;
form2.button2.onClick += metodo1;
/*y en el destroy*/
form2.button1.onClick --;
form2.button1.onClick --;
form2.button2.onClick --;
De esta manera, tanto button1 como button2 ejecutarían los eventos que tubiesen asignados antes más metodo1 y, además, button1 ejecutaría metodo2. Al destruir el form, dejamos los eventos tal y como estaban antes.
No me digáis que no es chulo!!!!!!
Sólo he puesto esto como curiosidad espero no haberme excedido.