Gli Eventi in C Sharp

di: Giorgio Borelli - del: 24 February 2010
Filed Under: C#

Spiegazione degli eventi in C#Sia che parliamo di programmazione per Windows Form o Web Form la gestione degli eventi in C# è un'aspetto fondamentale che ogni buon programmatore deve conoscere.

 

Il meccanismo degli eventi consente di notificare dei messaggi tra gli oggetti della mia applicazione al verificarsi di determinate condizioni. Allo scatenarsi di un evento è possibile gestirlo opportunamente per effettuare operazioni ed intraprendere azioni per variare il comportamento dell'applicazione come reazione al cambiamento del suo stato.

 

Un oggetto che genera un'evento, lo notifica ad un'altro che lo prende in carico e lo gestisce (handler dell'evento), tale meccanismo viene implementato per mezzo dei delegates, gli eventi in C# non sono altro che particolari tipi di delegate multicast.

 

 

Gli eventi allora completano le nostre classi, corredandole oltre che di metodi e proprietà, anche di un meccanismo per la notifica di messaggi agli altri oggetti, con la possibilità anche di gestirli con azioni (gestore dell'evento, handler) che interessano il cambiamento di stato. La classe base del .NET framework dal quale far derivare la definizione delle nostre classi per gli eventi è System.EventArgs, e specificare il delegate che ne rappresenta la firma per il gestore dell'evento (handler). Per i delegate, il tipo base per il gestore degli eventi è System.EventHandler, quest'ultimo accetta due parametri in ingresso, uno di tipo Sender che non è altro che l'oggetto che ha scatenato l'evento, e l'altro di tipo EventArgs ossia l'evento stesso contenente tutte le informazioni su di esso. Mentre per definire un evento come membro di una classe è necessario farlo tramite la parola chiave event. Come vedete la relazione tra eventi e delegati è strettissima.

 

Gli eventi sono usatissimi nella programmazione Windows, Windows stesso si basa su un meccanismo ad eventi, inoltre sia in applicazioni desktop (le Win Form) che in quelle Web (Web Form) lo scatenarsi di un evento è spesso legato all'interazione dell'utente con l'applicazione, il più banale degli esempi è quello della pressione di un bottone che genera l'evento click.

Ogni evento definito all'interno di una classe, possiede uno o più handler (event multicast) per eseguire l'azione necessaria (consumare l'evento) al suo verificarsi, Per sottoscrivere un handler ad un evento si fà uso dell'operatore +=, l'operazione inversa invece di desottoscrizione avviene con l'operatore -=.

 

Supponiamo di avere un Button con "ID=ButtonSend" per l'invio delle informarzioni di un form, tramite l'IDE di Visual Studio o tramite la colonna Properties del button è facile creare il gestore del corrispondente evento click, ma se volessimo fare tutto a manina dovremmo più o meno scrivere così:

 

//sottoscrivo l'evento all'Handler generico

    ButtonSend.Click += new EventHandler(OnButtonSend_Click);

 

 

    //gestore dell'evento

    protected void OnButtonSend_Click(object sender, EventArgs e)

    {

        //...

     }

 

Come notate il gestore dell'evento, per convenzione preceduto da "On", accetta i due parametri Sender ed EventArgs che riconrdiamo sono l'oggetto che ha scatenato l'evento e l'oggetto contenente le informazioni sull'evento (che può essere anche una classe derivante da EventArgs da noi appositamente definita).

 

Gli eventi in C# non vengono usati soltanto per notificare un semplice click di un bottone, ma in moltissimi altri e più complessi casi, come per la realizzazione di servizi windows ed applicazioni multitrhead, la loro importanza è quindi davvero notevole in qualsiasi ramo della programmazione noi vogliamo lanciarci, conoscerli ed assimilarli è pertanto fondamentale per ogni buon sviluppatore.

 

Per seguire gli articoli di www.informaticando.net iscrivetevi al suo feed RSS.

Comments (0) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading





Tag cloud

Ultimi Commenti

Comment RSS

Most comments

meniscus surgery meniscus surgery
17 comments
us United States
meniscus surgery meniscus surgery
16 comments
us United States
meniscus surgery meniscus surgery
13 comments
us United States
SimplyHosting Review SimplyHosting Review
6 comments
us United States
user.anonimo user.anonimo
1 comments
it Italy
lingerie lingerie
1 comments
us United States
Kecia Fonceca Kecia Fonceca
1 comments
us United States
zemne prace ponuka zemne prace ponuka
1 comments
us United States
Gregory Despain Gregory Despain
1 comments
us United States
health insurance quotes health insurance quotes
1 comments
us United States