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

Representa o método que irá manipular um evento que não tem dados do evento.

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

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

Parâmetros

sender
Tipo: System.Object
A origem do evento.
e
Tipo: System.EventArgs
Um objeto que não contém nenhum 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 identifica o 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 é um delegado predefinido que representa especificamente um método manipulador de eventos para um evento que não gere dados. Se o evento gera dados, você deve usar a classe genérica de EventHandler<TEventArgs> .

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 que está associado com um representante de EventHandler . O método atribuído ao representante de EventHandler é chamado no método de 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

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.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