"delegato dell'evento che connette un evento al relativo gestore. Per generare un evento, sono necessari due elementi:
* Delegato che identifica il metodo che fornisce la risposta all'evento.
* Una classe che contenga i dati dell'evento.
Un delegato è un tipo che definisce una firma, ovvero il tipo del valore restituito e i tipi relativi all'elenco dei parametri di un metodo. Il tipo delegato può essere utilizzato per dichiarare una variabile che può fare riferimento a qualsiasi metodo con la stessa firma del delegato.
La firma standard di un delegato del gestore eventi definisce un metodo che non restituisce alcun valore. Il primo parametro di tale metodo è di tipo Object e fa riferimento all'istanza che genera l'evento, mentre il secondo parametro è derivato dal tipo EventArgs e contiene i dati dell'evento. Se l'evento non genera dati dell'evento, il secondo parametro è semplicemente un'istanza di EventArgs. In caso contrario, il secondo parametro è un tipo personalizzato derivato da EventArgs e contiene i campi e le proprietà in cui inserire i dati dell'evento.
EventHandler è un delegato predefinito che rappresenta in modo specifico un metodo di gestione eventi per un evento che non genera dati. Se l'evento genera dati, è necessario fornire un tipo personalizzato di dati dell'evento e creare un delegato dove il tipo del secondo parametro è rappresentato dal tipo personalizzato, oppure utilizzare la classe di delegato generica EventHandler<(Of <(TEventArgs>)>) e sostituire il tipo personalizzato al parametro del tipo generico.
Per associare l'evento al metodo di gestione dell'evento, aggiungere all'evento un'istanza del delegato. Il gestore eventi viene richiamato ogni qualvolta si verifica l'evento, a meno che non venga rimosso il delegato. "