Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Esporta (0) Stampa
Espandi tutto
Espandi Riduci a icona
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Delegato EventHandler

Rappresenta il metodo di gestione di un evento che non dispone di dati associati.

Spazio dei nomi:  System
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public delegate void EventHandler(
	Object sender,
	EventArgs e
)

Parametri

sender
Tipo: System.Object
L'origine dell'evento.
e
Tipo: System.EventArgs
Un oggetto che non contiene dati dell'evento.

Il modello di eventi in .NET Framework si basa su un delegato dell'evento che connette un evento al relativo gestore. Per generare un evento, sono necessari due elementi:

  • Un delegato che identifica il metodo che fornisce la risposta all'evento.

  • Facoltativamente, una classe che mantiene i dati dell'evento, se l'evento fornisce dati.

Il delegato è un tipo che definisce una firma, vale a dire il tipo di valore restituito e i tipi dell'elenco dei parametri per un metodo. È possibile utilizzare il tipo di delegato per dichiarare una variabile che può fare riferimento a qualsiasi metodo con la stessa firma del delegato.

La firma standard di un delegato del gestore eventi definisce un metodo che non restituisce un valore. Il primo parametro del metodo è di tipo Object e fa riferimento all'istanza che genera l'evento. Il secondo parametro è derivato dal tipo EventArgs e mantiene i dati dell'evento. Se l'evento non genera dati ad esso relativi, il secondo parametro è semplicemente il valore del campo EventArgs.Empty. In caso contrario, il secondo parametro è un tipo derivato da EventArgs e contiene i campi e le proprietà necessarie per mantenere i dati dell'evento.

Il delegato EventHandler è un delegato predefinito che rappresenta in modo specifico un metodo di gestione eventi per un evento che non genera dati. Se l'evento genera dati, è necessario utilizzare la classe delegata generica EventHandler<TEventArgs>.

Per associare l'evento al metodo di gestione dell'evento, aggiungere all'evento un'istanza del delegato. Il gestore eventi viene chiamato ogni volta che si verifica l'evento, a meno che il delegato non venga rimosso.

Per ulteriori informazioni sui delegati di gestori eventi, vedere Gestione e generazione di eventi.

Nell'esempio seguente viene illustrato un evento denominato ThresholdReached associato ad un delegato EventHandler. Il metodo assegnato al delegato EventHandler viene chiamato nel metodo OnThresholdReached.


using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Counter c = new Counter(new Random().Next(10));
            c.ThresholdReached += c_ThresholdReached;

            Console.WriteLine("press 'a' key to increase total");
            while (Console.ReadKey(true).KeyChar == 'a')
            {
                Console.WriteLine("adding one");
                c.Add(1);
            }
        }

        static void c_ThresholdReached(object sender, ThresholdReachedEventArgs e)
        {
            Console.WriteLine("The threshold of {0} was reached at {1}.", e.Threshold,  e.TimeReached);
            Environment.Exit(0);
        }
    }

    class Counter
    {
        private int threshold;
        private int total;

        public Counter(int passedThreshold)
        {
            threshold = passedThreshold;
        }

        public void Add(int x)
        {
            total += x;
            if (total >= threshold)
            {
                ThresholdReachedEventArgs args = new ThresholdReachedEventArgs();
                args.Threshold = threshold;
                args.TimeReached = DateTime.Now;
                OnThresholdReached(args);
            }
        }

        protected virtual void OnThresholdReached(ThresholdReachedEventArgs e)
        {
            EventHandler<ThresholdReachedEventArgs> handler = ThresholdReached;
            if (handler != null)
            {
                handler(this, e);
            }
        }

        public event EventHandler<ThresholdReachedEventArgs> ThresholdReached;
    }

    public class ThresholdReachedEventArgs : EventArgs
    {
        public int Threshold { get; set; }
        public DateTime TimeReached { get; set; }
    }
}


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2015 Microsoft