Utilizzo degli eventi

Per utilizzare un evento in un'applicazione, occorre predisporre un metodo per la gestione eventi che esegua una logica di programma in risposta all'evento. Occorre inoltre registrare il gestore eventi presso l'origine evento. Si fa riferimento a questa operazione come a un collegamento evento. Nelle finestre di progettazione visiva di Windows Form e Web Form sono disponibili strumenti per lo sviluppo rapido di applicazioni (RAD, Rapid Application Development) che semplificano o nascondono i dettagli del collegamento eventi.

In questo argomento viene descritto il modello generale per la gestione degli eventi. Per una panoramica del modello eventi adottato da .NET Framework, vedere Eventi e delegati. Per ulteriori informazioni sul modello eventi in Windows Form, vedere Procedura: utilizzare eventi in un'applicazione Windows Form. Per ulteriori informazioni sul modello eventi in Web Form, vedere Procedura: utilizzare eventi in un'applicazione Web Form.

Il modello eventi

I dettagli sul collegamento degli eventi presentano delle differenze in Windows Form e Web Form a causa dei livelli differenti di supporto offerto dai diversi strumenti RAD. Tuttavia entrambi gli scenari seguono lo stesso modello di eventi, che presenta le caratteristiche seguenti:

  • Una classe che genera un evento denominato EventName include il membro seguente:

    public event EventNameEventHandler EventName;
    
    Public Event EventName As EventNameEventHandler
    
  • Il delegato dell'evento EventName è EventNameEventHandler, con la firma seguente:

    public delegate void EventNameEventHandler(object sender, EventNameEventArgs e);
    
    Public Delegate Sub EventNameEventHandler(sender As Object, e As EventNameEventArgs)
    

Per utilizzare l'evento EventName, è necessario che il gestore eventi abbia la stessa firma del delegato dell'evento:

void EventHandler(object sender, EventNameEventArgs e) {}
Sub EventHandler(sender As Object, e As EventNameEventArgs)

Nota

In .NET Framework il nome del delegato dell'evento rispetta la sintassi EventNameEventHandler, mentre nella documentazione il termine gestore eventi si riferisce a un metodo per la gestione degli eventi. La logica alla base di tale schema di denominazione è che un delegato EventNameEventHandler punta al gestore eventi (il metodo) che effettivamente gestisce l'evento.

Quando a un evento non è associato alcun dato, la classe che genera l'evento utilizza System.EventHandler come delegato e System.EventArgs per i dati dell'evento. Gli eventi a cui sono associati dati utilizzano classi che derivano da EventArgs per il tipo di dati dell'evento e il tipo di delegato dell'evento corrispondente. Se, ad esempio, si desidera gestire un evento MouseUp in un'applicazione Windows Form, la classe dei dati dell'evento sarà MouseEventArgs e il delegato dell'evento sarà MouseEventHandler. Si noti che diversi eventi del mouse utilizzano una classe comune per i dati evento e un delegato di evento comune, pertanto il criterio di denominazione non corrisponde esattamente a quello sopra descritto. Per gli eventi del mouse, è necessario che il gestore eventi presenti la firma seguente:

void Mouse_Moved(object sender, MouseEventArgs e){}
Sub Mouse_Moved(sender As Object, e As MouseEventArgs)

I parametri del mittente e dell'argomento evento forniscono ulteriori dettagli sull'evento mouse al gestore eventi. L'oggetto mittente indica cosa ha generato l'evento. Il parametro MouseEventArgs fornisce dettagli sul movimento del mouse che ha generato l'evento. Molte origini eventi forniscono dati aggiuntivi relativi all'evento e numerosi gestori eventi utilizzano i dati specifici dell'evento per elaborare l'evento. Per un esempio in cui vengono illustrate la generazione e la gestione di eventi con dati specifici dell'evento, vedere Procedura: generare e utilizzare eventi.

Nota

Gli eventi vengono anche generati all'esterno del contesto delle interfacce utente (UI, User Interface). .NET Framework, infatti, include numerose classi non UI che generano eventi. Tutti gli eventi seguono comunque il modello appena descritto.

Per informazioni su come generare eventi da una classe, vedere Generazione di un evento.

Vedere anche

Attività

Procedura: utilizzare eventi in un'applicazione Web Form
Procedura: utilizzare eventi in un'applicazione Windows Form

Concetti

Eventi e delegati
Generazione di un evento

Altre risorse

Gestione e generazione di eventi