Panoramica degli eventi (Windows Form .NET)
Un evento è un'azione a cui è possibile rispondere o "handle" nel codice. Gli eventi possono essere generati da un'azione dell'utente, ad esempio facendo clic sul mouse o premendo un tasto, tramite codice programma o dal sistema.
Le applicazioni basate su eventi eseguono codice in risposta a un evento. Ogni form e ogni controllo espone un set predefinito di eventi per cui è possibile creare codice. Se uno di questi eventi si verifica e c'è codice di un gestore eventi associato, tale codice viene richiamato.
Un oggetto può generare diversi tipi di eventi, ma molti tipi sono comuni alla maggior parte dei controlli. Ad esempio, la maggior parte degli oggetti gestirà un evento Click. Se un utente fa clic su un form, sarà eseguito il codice disponibile nel gestore eventi Click del codice.
Nota
Molti eventi si verificano insieme ad altri eventi. Ad esempio, quando si verifica l'evento DoubleClick, si verificano anche gli eventi MouseDown, MouseUp e Click.
Per informazioni su come generare e utilizzare un evento, vedere Gestione e generazione di eventi.
Delegati e loro ruolo
I delegati sono classi comunemente usate all'interno di .NET per creare meccanismi di gestione degli eventi. I delegati equivalgono approssimativamente ai puntatori a funzione, comunemente usati in Visual C++ e in altri linguaggi orientati agli oggetti. A differenza dei puntatori a funzioni, tuttavia, i delegati sono orientati ad oggetti, indipendenti dai tipi e sicuri. Inoltre, dove un puntatore a funzione contiene solo un riferimento a una funzione specifica, un delegato è costituito da un riferimento a un oggetto e fa riferimento a uno o più metodi all'interno dell'oggetto .
Questo modello di evento usa delegati per associare gli eventi ai metodi usati per gestirli. Il delegato permette alle altre classi di effettuare la registrazione per la notifica di eventi specificando un metodo del gestore. Quando si verifica l'evento, il delegato chiama il metodo associato. Per altre informazioni su come definire i delegati, vedere Gestione e generazione di eventi.
I delegati possono essere associati a un singolo metodo o a più metodi (multicast). Quando si crea un delegato per un evento, in genere si crea un evento multicast. Un'eccezione rara potrebbe essere un evento che comporta una procedura specifica ,ad esempio la visualizzazione di una finestra di dialogo, che non ripeterebbe logicamente più volte per evento. Per informazioni su come creare un delegato multicast, vedere Come combinare delegati (delegati multicast).
Un delegato multicast gestisce un elenco chiamate dei metodi a cui è associato. Il delegato multicast supporta un metodo Combine per aggiungere un metodo all'elenco di chiamate e un metodo Remove per rimuoverlo.
Quando un evento è registrato dall'applicazione, il controllo genera l'evento richiamando il delegato corrispondente. Il delegato chiama a sua volta il metodo associato. Nel caso più comune (un delegato multicast), il delegato chiama a sua volta ogni metodo associato nell'elenco chiamate, che fornisce una notifica uno-a-molti. Questa strategia significa che il controllo non deve mantenere un elenco di oggetti di destinazione per la notifica degli eventi. Il delegato gestisce tutte le registrazioni e le notifiche.
I delegati permettono anche l'associazione di più eventi allo stesso metodo, offrendo una notifica di tipo molti-a-uno. Ad esempio, un evento di selezione di un pulsante e un evento di selezione di un comando di menu possono richiamare lo stesso delegato, che quindi chiama un singolo metodo per gestire questi eventi separati nello stesso modo.
Il meccanismo di associazione usato con i delegati è dinamico: un delegato può essere associato in fase di esecuzione a qualsiasi metodo la cui firma corrisponde a quella del gestore eventi. Questa funzionalità consente di impostare o modificare il metodo associato in base a una condizione e di collegare in modo dinamico un gestore eventi a un controllo.
Vedi anche
.NET Desktop feedback