442 messaggi dal 09 marzo 2006
ciao.
Devo visualizzare un form non modale e comunicare da un oggetto form a questo alcuni comandi come visualizza categoria a , elimina selezionato , cose cosi'.
Mi chiedevo se fosse meglio usare un sistema ad eventi o avere direttamente il riferimento a questo form nell oggetto e richiamare funzioni che fanno quello che ho spiegato sopra.
Quale è alla fine l'utilità degli eventi?
il fatto che disaccoppiano ?
Sono una sorta di observer in c++?
grazie.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Giuseppe,
sì, puoi vedere gli eventi come un'implementazione del pattern observer.

giuseppe500 ha scritto:
Quale è alla fine l'utilità degli eventi?
il fatto che disaccoppiano?

Certo, perché uno o più riceventi possono registrarsi con un loro delegate, senza che la classe proprietaria di quell'evento se ne debba interessare.
Un evento ti sarà utile se, oltre alla form, hai anche altri componenti interessati a registrare l'evento (es. un modulo di logging).

Concettualmente, usi gli eventi quando la classe che li solleva non ha bisogno di nient'altro per lavorare. Cioè, potrebbe non esserci alcun ricevente e funzionare ugualmente bene.

Invece, se la classe ha una dipendenza forte da qualche altro componente (cioè non riuscirebbe a compiere il suo lavoro senza), allora dovresti passarle una referenza dall'esterno. E' quello che tu dici qui:

giuseppe500 ha scritto:
avere direttamente il riferimento a questo form nell'oggetto


Quindi decidi tu: se i due form sono debolmente accoppiati, allora preferisci gli eventi, altrimenti passa un'istanza del secondo form al costruttore del primo form. In quest'ultimo caso ricorda di legarti ad interfacce, e non ad implementazioni concrete.
public class PrimoForm : Form {
  //IFormEsecutore sarà una tua interfaccia implementata dal secondo form
  public PrimoForm(IFormEsecutore formEsecutore) {
      
  }
}

Qua altre info:
http://www.codeproject.com/Articles/702246/Program-to-Interface-not-Implementation-Beginners#pre10

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.