Condividi tramite


Panoramica degli eventi (Windows Form)

Un evento è un'azione a cui è possibile rispondere o "gestire" nel codice. Gli eventi possono essere generati da un'azione dell'utente, ad esempio facendo clic sul mouse o premendo un tasto; per codice programma; o dal sistema.

Le applicazioni guidate dagli eventi eseguono codice in risposta a un evento. Ogni modulo e controllo espone un set predefinito di eventi su cui è possibile programmare. Se uno di questi eventi si verifica e nel gestore eventi associato è presente codice, tale codice viene richiamato.

I tipi di eventi generati da un oggetto variano, 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 modulo, viene eseguito il codice nel gestore dell'evento Click del modulo.

Nota

Molti eventi si verificano insieme ad altri eventi. Ad esempio, nel corso dell'evento DoubleClick che si verifica, si verificano gli eventi MouseDown, MouseUpe Click.

Per informazioni su come generare e utilizzare un evento, vedere Eventi.

Delegati e loro ruoli

I delegati sono classi comunemente usate in .NET Framework 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 funzione, tuttavia, i delegati sono orientati agli 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 eventi ai metodi usati per gestirli. Il delegato consente ad altre classi di registrarsi per la notifica degli 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 Eventi.

I delegati possono essere associati a un singolo metodo o a più metodi; in questo caso si parla di multicast. Quando si crea un delegato per un evento, tu (o Windows) di solito crei 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 ogni evento. Per informazioni su come creare un delegato multicast, vedere Come combinare delegati (delegati multicast).

Un delegato multicast mantiene un elenco di invocazione dei metodi a cui è legato. Il delegato multicast supporta un metodo Combine per aggiungere un metodo all'elenco chiamate e un metodo Remove per rimuoverlo.

Quando un evento viene registrato dall'applicazione, il controllo genera l'evento richiamando il delegato per tale evento. Il delegato chiama a sua volta il metodo associato. Nel caso più comune (un delegato multicast) il delegato chiama ogni metodo associato nell'elenco di invocazioni a sua volta, 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, ovvero il delegato gestisce tutte le registrazioni e le notifiche.

I delegati consentono anche l'associazione di più eventi allo stesso metodo, consentendo una notifica molti-a-uno. Ad esempio, un evento di clic del pulsante e un evento di clic del comando del menu possono invocare lo stesso delegato, il quale a sua volta chiama un unico metodo per gestire questi eventi distinti 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. Con questa funzionalità, è possibile configurare o modificare il metodo associato a seconda di una condizione e associare dinamicamente un gestore eventi a un controllo.

Vedere anche