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<TEventArgs>

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

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

[SerializableAttribute]
public delegate void EventHandler<TEventArgs>(
	Object sender,
	TEventArgs e
)

Parametri di tipo

TEventArgs

Tipo dei dati generati dall'evento.

Parametri

sender
Tipo: System.Object
Origine dell’evento.
e
Tipo: TEventArgs
Oggetto contenente i dati dell'evento.

Il modello di evento 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 fa riferimento a un metodo che fornisce la risposta all'evento.

  • Facoltativamente, una classe che trattiene 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 tipo di 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 trattiene i dati dell'evento. Se l'evento non genera dati relativi all'evento, 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 trattenere i dati dell'evento.

Il delegato EventHandler<TEventArgs> è un delegato predefinito che rappresenta in modo specifico un metodo di gestione eventi per un evento che genera dati. Il vantaggio di utilizzare l'oggetto EventHandler<TEventArgs> è rappresentato dal fatto che non è necessario codificare il proprio delegato personalizzato se l'evento genera dati relativi all'evento. Fornire semplicemente il tipo di dati degli eventi come parametro generico.

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 mostrato un evento denominato ThresholdReached. L'evento viene associato a un delegato EventHandler<TEventArgs>.


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

.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
Mostra:
© 2014 Microsoft