Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

EventHandler<TEventArgs> (Delegado)

Representa el método que controlará eventos cuando el evento proporcione datos.

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)

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

Parámetros de tipo

TEventArgs

Tipo de los datos de evento generados por el evento.

Parámetros

sender
Tipo: System.Object
Origen del evento.
e
Tipo: TEventArgs
Objeto que contiene los datos del evento.

El modelo de evento de .NET Framework se basa en la existencia de un delegado de eventos que conecte un evento a su controlador. Para generar un evento, se requieren dos elementos:

  • Delegado que hace referencia a un método que proporciona la respuesta al evento.

  • Opcionalmente, una clase que contiene los datos de eventos, si el evento proporciona datos.

El delegado es un tipo que define una firma; es decir, el tipo del valor devuelto y los tipos de la lista de parámetros de un método. Puede utilizar el tipo delegado para declarar una variable que puede hacer referencia a cualquier método con la misma firma que el delegado.

La firma estándar de un delegado de manejador de eventos define un método que no devuelve un valor. El primer parámetro de este método es de tipo Object y hace referencia a la instancia que provoca el evento. El segundo parámetro se deriva de tipo EventArgs y contiene los datos de evento. Si el evento no genera datos de evento, el segundo parámetro es simplemente el valor del campo EventArgs.Empty . De lo contrario, el segundo parámetro es un tipo derivado de EventArgs y proporciona cualquier campo o propiedad necesarios para contener los datos de eventos.

Delegado EventHandler<TEventArgs> es un delegado predefinido que representa un método de control de eventos para un evento que genera datos. La ventaja de utilizar EventHandler<TEventArgs> es que no necesita codificar su propio delegado personalizado si el evento genera datos de eventos. Se proporciona simplemente el tipo del objeto de datos de eventos como parámetro genérico.

Para asociar el evento al método que lo controlará, hay que agregar una instancia del delegado al evento. A menos que se quite el delegado, el controlador de eventos recibirá una llamada siempre que se produzca el evento.

Para obtener más información acerca de los delegados del controlador de eventos, vea Controlar y provocar eventos.

El ejemplo siguiente muestra un evento denominado ThresholdReached. El evento se asocia a un delegado 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

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: 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 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft