Exportar (0) Imprimir
Expandir Tudo
Expandir Minimizar
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Delegado EventHandler<TEventArgs>

Representa o método que irá manipular um evento quando o evento fornecer dados.

Namespace:  System
Assembly:  mscorlib (em mscorlib.dll)

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

Parâmetros de tipo

TEventArgs

O tipo de dados de eventos gerados pelo evento.

Parâmetros

sender
Tipo: System.Object
A origem do evento.
e
Tipo: TEventArgs
Um objeto que contém os dados do evento.

O modelo de evento no .NET Framework é baseado em ter um representante de evento que conecta um evento com o manipulador. Para gerar um evento, elementos são necessários:

  • Um delegado que faz referência a um método que fornece a resposta ao evento.

  • Opcionalmente, uma classe que contém os dados de evento, se o evento fornece dados.

O representante é um tipo que define uma assinatura, isto é, o tipo do valor de retorno e a lista de parâmetros de tipo para um método. Você pode usar o tipo delegado para declarar uma variável que pode fazer referência a qualquer método com a mesma assinatura do delegado.

A assinatura padrão de um delegado manipulador de eventos define um método que não retorna um valor. O primeiro parâmetro desse método é do tipo Object e refere-se à instância que gera o evento. O segundo parâmetro é derivado do tipo EventArgs e armazena os dados do evento. Se o evento não gera dados de evento, o segundo parâmetro é simplesmente o valor do campo de EventArgs.Empty . Caso contrário, o segundo parâmetro é um tipo derivado de EventArgs e fornece todos os campos ou propriedades necessários para armazenar os dados do evento.

O representante de EventHandler<TEventArgs> é um delegado predefinido que representa um método manipulador de eventos para um evento que produz dados. A vantagem de usar EventHandler<TEventArgs> é que você não precisar codificar seu próprio delegado personalizado se o evento gera dados de evento. Você fornece apenas o tipo de objeto de dados do evento como o parâmetro genérico.

Para associar o evento ao método que manipulará o evento, adicione uma instância do representante ao evento. O manipulador de evento é chamado sempre que o evento ocorre, a menos que você remova o delegate.

Para obter mais informações sobre os delegados manipuladores de eventos, consulte Manipulando e acionando eventos.

O exemplo a seguir mostra um evento chamado ThresholdReached. O evento é associado com um representante de 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

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Biblioteca de Classes Portátil

Com suporte em: Biblioteca de Classes Portátil

.NET para aplicativos da Windows Store

Com suporte em: Windows 8

.NET para aplicativos do Windows Phone

Com suporte em: 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 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft