Eventi e gestori eventi

Aggiornamento: novembre 2007

Mentre è possibile rappresentare graficamente un progetto di Visual Studio come una serie di procedure eseguite in sequenza, in realtà la maggior parte dei programmi sono basati su eventi, ovvero il flusso di esecuzione è determinato da occorrenze esterne denominate eventi.

Un evento è un segnale che informa un'applicazione che si è verificato qualcosa di importante. Quando ad esempio l'utente fa clic su un controllo in un form, quest'ultimo può generare un evento Click e chiamare una routine che gestisce tale evento. Gli eventi consentono anche la comunicazione tra diverse attività. Se ad esempio l'applicazione esegue un'attività di ordinamento separatamente rispetto all'applicazione principale, e l'ordinamento viene annullato dall'utente, l'applicazione può inviare un evento di annullamento che determina l'interruzione del processo di ordinamento.

Termini e concetti relativi agli eventi

In questa sezione vengono descritti i termini e i concetti impiegati con gli eventi in Visual Basic.

Dichiarazione di eventi

Per dichiarare eventi all'interno di classi, strutture, moduli e interfacce, è possibile utilizzare la parola chiave Event, come nell'esempio seguente:

Event AnEvent(ByVal EventNumber As Integer)

Generazione di eventi

Un evento è una sorta di messaggio che informa che è accaduto qualcosa di importante. L'atto di trasmettere il messaggio è detto generazione dell'evento. In Visual Basic, è possibile generare eventi con l'istruzione RaiseEvent, come nell'esempio riportato di seguito:

RaiseEvent AnEvent(EventNumber)

È necessario generare gli eventi nell'ambito della classe, modulo o struttura quando sono dichiarati. Non è ad esempio possibile che una classe derivata generi eventi ereditati da una classe base.

Origini eventi

Qualsiasi oggetto capace di generare un evento è un mittente dell'evento, noto anche come origine eventi. Form, controlli e oggetti definiti dall'utente sono esempi di origini eventi.

Gestori di eventi

I gestori di eventi sono routine che vengono richiamate quando si verifica un evento corrispondente. È possibile utilizzare qualsiasi subroutine valida con una firma corrispondente come gestore di eventi. Non è invece possibile utilizzare una funzione come gestore di eventi in quanto questa non è in grado di restituire un valore all'origine evento.

In Visual Basic per i gestori di eventi viene utilizzata una convenzione di denominazione standard che combina il nome del mittente dell'evento, seguito da un carattere di sottolineatura e il nome dell'evento. Ad esempio, l'evento Click di un pulsante denominato button1 verrebbe denominato Sub button1_Click.

Nota:

L'utilizzo di questa convenzione di denominazione è consigliato ma non obbligatorio per la definizione dei gestori eventi; è possibile utilizzare qualsiasi nome di subroutine valido.

Associazione di eventi a gestori di eventi

Perché un gestore di eventi diventi utilizzabile, è necessario dapprima associarlo a un evento utilizzando l'istruzione Handles o AddHandler.

L'istruzione WithEvents e la clausola Handles forniscono una modalità dichiarativa per specificare i gestori di eventi. Gli eventi generati da un oggetto dichiarato con WithEvents possono essere gestiti mediante qualsiasi subroutine con una clausola Handles che nomina l'evento. Sebbene la clausola Handles sia il metodo standard per associare un evento a un gestore di eventi, questa si limita ad associare gli eventi ai gestori di eventi in fase di compilazione.

Le istruzioni AddHandler e RemoveHandler sono più flessibili rispetto alla clausola Handles, in quanto consentono di connettere e disconnettere dinamicamente gli eventi da uno o più gestori di eventi in fase di esecuzione e non richiedono la dichiarazione delle variabili oggetto utilizzando WithEvents. Tuttavia, quando si utilizza WithEvents vi sono alcune restrizioni. Per ulteriori informazioni, vedere WithEvents e clausola Handles.

In alcuni casi, come per gli eventi associati a form o controlli, in Visual Basic viene generato automaticamente un gestore eventi vuoto che viene associato a un evento. Quando ad esempio si fa doppio clic su un pulsante di comando in un form in modalità progettazione, Visual Basic crea un gestore eventi vuoto e una variabile WithEvents per tale pulsante, come nel codice riportato di seguito:

Friend WithEvents Button1 As System.Windows.Forms.Button
Protected Sub Button1_Click(ByVal sender As System.Object, _
   ByVal e As System.EventArgs) Handles Button1.Click
End Sub

Vedere anche

Attività

Procedura: scrivere gestori eventi

Concetti

AddHandler e RemoveHandler

WithEvents e clausola Handles

Riferimenti

Handles

Istruzione AddHandler