Gestione eventi tra un oggetto ed una form

giovedì 30 novembre 2006 - 14.37

dagre76 Profilo | Newbie

Salve a tutti, è la prima volta che scrivo.

Sto svilluppando un'applicazione in c#, .net 2005, il mio problema è questo:

Come faccio per inviare un evento da una classe, ad una form?

In pratica ho un oggetto che in un determinato istante (noto), deve inviare un evento ad una form.
I
Dove devo dichiarare l'evento? e dove il delegate?

grazie,


david

0v3rCl0ck Profilo | Guru

Ciao,

in allegato ti ho preparato un esempio, commentando ogni linea di codice.

se hai bisogno di chiarimenti chiedi pure.


Enjoy it

dagre76 Profilo | Newbie

Grazie mille, adesso mi studio il codice e ti faccio sapere.
david

0v3rCl0ck Profilo | Guru

ok, attendo un tuo feedback, se hai problemi fammi sapere.


Enjoy it

dagre76 Profilo | Newbie

nella form è dichiarato e poi creata la "private MainClass MainObject;"

Io ho questa situazione:

1) dal program, ad un certo punto, parte un thread che realizza un ciclo perenne (per verificare dei dati):

(nel program)
updater = new UpdaterThread();
updaterThread = new Thread(new ThreadStart(updater.threadAggiornaUtenze));
try
{
updaterThread.Start();
}

dopo qualche riga nel Program, invoco la creazione della MainScreen dell'applicazione:

Application.Run(new Supervisor.GUI.MainScreenNew());


Adesso devo fare in modo che alla fine del primo ciclo di verifica(dura 5 secondi) realizzato all'interno del thread,
possa essere generato un evento che possa essere intercettato nella Mianscreen per fare un aggiornamento.

che ne pensi?
david

0v3rCl0ck Profilo | Guru

>nella form è dichiarato e poi creata la "private MainClass MainObject;"
>
>Io ho questa situazione:
>
>1) dal program, ad un certo punto, parte un thread che realizza
>un ciclo perenne (per verificare dei dati):
>
>(nel program)
>updater = new UpdaterThread();
>updaterThread = new Thread(new ThreadStart(updater.threadAggiornaUtenze));
> try
> {
> updaterThread.Start();
> }
>
>dopo qualche riga nel Program, invoco la creazione della MainScreen
>dell'applicazione:
>
>Application.Run(new Supervisor.GUI.MainScreenNew());
>
>
>Adesso devo fare in modo che alla fine del primo ciclo di verifica(dura
>5 secondi) realizzato all'interno del thread,
>possa essere generato un evento che possa essere intercettato
>nella Mianscreen per fare un aggiornamento.
>
>che ne pensi?
>david


penso che vada benissimo...

fai un metodo nella form MainScreenNew che sia uguale al delegato usato per l'evento che hai precedentemente creato nell'oggetto updater, poi crei una l'oggetto della form e ci "appiccichi" l'evento:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

la funzione OnCicloTerminato della form main dovrà essere:

public void OnCicloTerminato(Objet sender, System.EventArgs e) { }

e l'evento dell'updater dichiarato così:

public event System.EventHandler CicloTerminato;

se ho sbagliato qualcosa di sintassi del c#, mi scuso... ma dovrebbe andare


Enjoy it

dagre76 Profilo | Newbie

Ho risolto, mi sei stato di grande aiuto thanks!!

Quello che non avevo capito e che essendo form di avvio, le associazioni tipo:
updater.UtenzaStateEvent += new UtenzeInAutomaticHandler(MainScreen.utenzeInAutomatic);

le dovevo fare nel Program del progetto!

saluti

0v3rCl0ck Profilo | Guru

benone

accetta la risposta che chiudiamo il thread =)


Ciao e alla prox.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5