Condividi tramite


Cenni preliminari sugli eventi (Windows Form)

Un evento è un'azione a cui si risponde, ovvero che si gestisce, nel codice. Gli eventi possono essere generati da un'azione dell'utente, ad esempio il clic con il pulsante del mouse o la pressione di un tasto, dal codice del programma o dal sistema.

Le applicazioni guidate dagli eventi eseguono determinate parti di codice in risposta a un evento. Ogni form e ogni controllo presentano un gruppo già definito di eventi in base ai quali è possibile eseguire la programmazione. Se si verifica uno di tali eventi e ad esso è associato codice nel gestore eventi, il codice viene richiamato.

I tipi di eventi generati da un oggetto possono variare, ma la maggior parte di essi è comune a quasi tutti i controlli. Quasi tutti gli oggetti, ad esempio, gestiranno l'evento Click. Se un utente fa clic su un form, verrà eseguito il gestore eventi Click del form.

Nota

Molti eventi vengono generati in associazione ad altri eventi. Mentre viene generato l'evento DoubleClick, ad esempio, vengono generati anche gli eventi MouseDown, MouseUp e Click.

Per informazioni su come generare e utilizzare un evento, vedere Procedura: generare e utilizzare eventi. Per un esempio di come connettere gestori dell'evento e metodi, vedere Procedura: connettere agli eventi metodi per la gestione degli eventi.

Delegati e relativi ruoli

I delegati sono classi generalmente utilizzate all'interno di .NET Framework per la compilazione dei meccanismi di gestione degli eventi. I delegati sono paragonabili ai puntatori a funzione utilizzati in Visual C++ e in altri linguaggi di programmazione orientati agli oggetti. A differenza dei puntatori a funzione, i delegati sono orientati agli oggetti, indipendenti dai tipi e protetti. Inoltre i puntatori a funzione contengono solo un riferimento a una data funzione, mentre i delegati sono costituiti dal riferimento a un oggetto e da una serie di riferimenti a uno o più metodi all'interno dell'oggetto.

Questo modello di eventi utilizza i delegati per associare eventi ai metodi utilizzati per gestire i metodi stessi. Il delegato consente ad altre classi la registrazione per la notifica di eventi, specificando un metodo per il gestore. Quando l'evento viene generato, il delegato richiama il metodo associato. Per ulteriori informazioni su come definire i delegati, vedere Eventi e delegati.

I delegati possono essere associati a un singolo metodo o a più metodi, associazione definita multicasting. Quando si crea un delegato per un evento, in genere viene creato un evento multicast da Progettazione Windows Form. Una rara eccezione riguarda un evento che determina una procedura specifica, ad esempio la visualizzazione di una finestra di dialogo, che secondo logica non dovrebbe essere ripetuta più volte per evento. Per informazioni sulla creazione di un delegato multicast, vedere Procedura: combinare delegati multicast (Guida per programmatori C#).

Un delegato multicast gestisce l'elenco di chiamate ai 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 viene registrato dall'applicazione, il controllo genera l'evento richiamando il relativo delegato. Il delegato richiama a sua volta il metodo associato. Il caso più tipico riguarda un delegato multicast che richiama ciascun metodo associato nell'elenco di chiamate e fornisce una notifica uno-a-molti. Questa strategia evita al controllo la necessità di gestire un elenco di oggetti di destinazione per la notifica degli eventi. La gestione di tutte le registrazioni e di tutte le notifiche è infatti demandata al delegato.

I delegati consentono anche l'associazione di più eventi allo stesso metodo e di conseguenza la notifica molti-a-uno. Un evento Click relativo a un pulsante e un evento Click relativo a un comando di menu, ad esempio, possono entrambi richiamare il medesimo delegato, che richiama a sua volta un unico metodo per gestire allo stesso modo i due eventi distinti.

Il meccanismo di associazione utilizzato con i delegati è di tipo dinamico e consente di associare un delegato in fase di esecuzione a qualsiasi metodo la cui firma corrisponda a quella del gestore eventi. Questa funzionalità consente di impostare o di modificare il metodo di associazione in base a una condizione e di associare dinamicamente un gestore eventi a un controllo.

Vedere anche

Concetti

Cenni preliminari sui gestori eventi (Windows Form)

Altre risorse

Creazione di gestori eventi in Windows Form