Come posso aumentare un evento in un controllo utente e catturarlo nella pagina principale?

Ho un UserControl , e ho bisogno di notificare alla pagina padre che è stato fatto clic su un pulsante in UserControl . Come posso generare un evento in UserControl e catturarlo nella pagina principale? Ho provato a usare l’ static e molti mi hanno suggerito di partecipare agli eventi!

Scopri Event Bubbling – http://msdn.microsoft.com/en-us/library/aa719644%28vs.71%29.aspx

Modifica per aggiungere un esempio rapido: (e ulteriori modifiche per migliorare la formattazione)

Controllo dell’utente

 public event EventHandler StatusUpdated; private void FunctionThatRaisesEvent() { //Null check makes sure the main page is attached to the event if (this.StatusUpdated != null) this.StatusUpdated(this, new EventArgs()); } 

Pagina principale / modulo

 public void MyApp() { //USERCONTROL = your control with the StatusUpdated event this.USERCONTROL.StatusUpdated += new EventHandler(MyEventHandlerFunction_StatusUpdated); } public void MyEventHandlerFunction_StatusUpdated(object sender, EventArgs e) { //your code here } 

Aggiungi un evento nel tuo controllo:

 public event EventHandler SomethingHappened; 

e sollevalo quando vuoi notificare al genitore:

 if(SomethingHappened != null) SomethingHappened(this, new EventArgs); 

Se hai bisogno di eventi personalizzati, prova EventHandler invece che T un tipo derivato da EventArgs .

O se stai cercando una soluzione più disaccoppiata puoi usare un modello di editore / sottoscrittore di messenger come MVVM Light Messenger qui