shown net form event activate c# winforms events

c# - net - Eventos burbujeantes.



shown c# (6)

A menos que vea un poco más del diseño ... será difícil dar una buena respuesta.

WPF sube los eventos (automáticamente) al árbol Componente / Control de UI ... esto ahora se ha incorporado al marco. Así que supongo que esa es la manera recomendada :)

El problema al pasar por alto al intermediario Layer2 es que Layer1 y Layer3 ahora se conocen ... están acoplados. Entonces, es una compensación ... si está de acuerdo con el acoplamiento ... elimine al intermediario / invente un componente especializado con esta responsabilidad. Sin embargo, si espera que la capa 3 sea hot-swappable (bajo acoplamiento), yo diría que continúe burbujeando.

Tengo varias capas en una aplicación y me encuentro teniendo que pasar eventos a la capa de la GUI para hacer cambios en la barra de estado, etc. . Me encuentro teniendo que escribir códigos repetidos en los que cada capa simplemente se suscribe a los eventos de la capa inferior y luego en la devolución de llamada simplemente se genera un evento en la cadena. ¿Hay una manera más eficiente de hacer esto?


Eche un vistazo a Update Controls .NET . Estos controles descubren las partes de su modelo de datos de las que dependen incluso a través de capas de lógica empresarial. No tiene que escribir ningún código para notificarlos.


Lea el blog de Jeremy Miller, "The Shade Tree Developer", especialmente su serie Write Your Own CAB : el patrón de comandos del que habla probablemente sea lo que necesita.



Puede tener un canal central que solo admita eventos. Este canal debe ser independiente, de modo que la capa solo publique o suscriba.


Si todo lo que hace es disparar un controlador de eventos desde otro controlador de eventos, puede cortar al intermediario y enganchar los controladores de eventos directamente en los bloques de agregar / eliminar para el evento.

Por ejemplo, si tiene un UserControl con un evento "SaveButtonClick", y todo lo que desea hacer es llamar al controlador de eventos cuando se hace clic en "GuardarBotón" en su UserControl, puede hacer esto:

public event EventHandler SaveButtonClick { add { this.SaveButton.Click += value; } remove { this.SaveButton.Click -= value; } }

Ahora no necesita ningún código para activar el evento SaveButtonClick: se activará automáticamente cuando se produzca el evento SaveButton.Click (es decir, cuando alguien haga clic en ese botón).