Exporter (0) Imprimer
Développer tout
Développer Réduire

EventHandler, délégué générique

Représente la méthode qui gère un événement.

Espace de noms: System
Assembly : mscorlib (dans mscorlib.dll)

[SerializableAttribute] 
public delegate void EventHandler<TEventArgs> (
	Object sender,
	TEventArgs e
) where TEventArgs : EventArgs
J# prend en charge l'utilisation de types et de méthodes génériques mais pas la déclaration de nouveaux types et de méthodes génériques.
JScript ne prend pas en charge les types et les méthodes génériques.
Non applicable.

Paramètres de type

TEventArgs

Type des données d'événement générées par l'événement.

Paramètres

sender

Source de l'événement.

e

EventArgs qui contient les données de l'événement.

Le modèle d'événement dans le .NET Framework est fondé sur la présence d'un délégué d'événement qui connecte un événement avec son gestionnaire. Pour déclencher un événement, deux éléments sont nécessaires :

  • Délégué qui fait référence à une méthode fournissant la réponse à l'événement.

  • Classe qui contient les données d'événement.

Le délégué est un type qui définit une signature, c'est-à-dire le type de valeur de retour et les types de listes de paramètres d'une méthode. Vous pouvez utiliser le type délégué pour déclarer une variable pouvant faire référence à toute méthode avec la même signature que le délégué.

La signature standard d'un délégué de gestionnaire d'événements définit une méthode qui ne retourne pas de valeur, dont le premier paramètre est de type Object et référence l'instance qui génère l'événement, et dont le second paramètre est dérivé du type EventArgs et contient les données d'événement. Si l'événement ne génère pas de données d'événement, le second paramètre est simplement une instance de EventArgs. Sinon, le second paramètre est un type personnalisé dérivé de EventArgs et fournit tous les champs ou les propriétés nécessaires pour stocker les données d'événement.

EventHandler est un délégué prédéfini qui représente une méthode de gestionnaire d'événements pour un événement, que l'événement génère ou non des données d'événement. Si votre événement ne génère pas de données d'événement, substituez EventArgs au paramètre de type générique ; sinon, spécifiez votre propre type de données d'événement personnalisé et substituez-le au paramètre de type générique.

L'utilisation de EventHandler offre l'avantage de ne pas devoir coder votre propre délégué personnalisé si votre événement génère des données d'événement. En outre, le .NET Framework a besoin d'une seule implémentation pour prendre en charge EventHandler, quel que soit le type de données d'événement que vous substituez au paramètre de type générique.

Pour associer cet événement à la méthode qui gère l'événement, ajoutez une instance du délégué à l'événement. Le gestionnaire d'événements est appelé chaque fois qu'un événement se produit, sauf si vous supprimez le délégué.

Pour plus d'informations sur les délégués de gestionnaires d'événements, consultez Événements et délégués.

L'exemple de code suivant déclare des données d'événement et un délégué EventHandler générique qui utilise les données d'événement et montre comment l'événement est déclenché.

// This example demonstrates the EventHandler<T> delegate.

using System;
using System.Collections.Generic;

//---------------------------------------------------------
public class MyEventArgs : EventArgs
{
    private string msg;

    public MyEventArgs( string messageData ) {
        msg = messageData;
    }
    public string Message { 
        get { return msg; } 
        set { msg = value; }
    }
}
//---------------------------------------------------------
public class HasEvent
{
// Declare an event of delegate type EventHandler of 
// MyEventArgs.

    public event EventHandler<MyEventArgs> SampleEvent;

    public void DemoEvent(string val)
    {
    // Copy to a temporary variable to be thread-safe.
        EventHandler<MyEventArgs> temp = SampleEvent;
        if (temp != null)
            temp(this, new MyEventArgs(val));
    }
}
//---------------------------------------------------------
public class Sample
{
    public static void Main()
    {
        HasEvent he = new HasEvent();
        he.SampleEvent += 
                   new EventHandler<MyEventArgs>(SampleEventHandler);
        he.DemoEvent("Hey there, Bruce!");
        he.DemoEvent("How are you today?");
        he.DemoEvent("I'm pretty good.");
        he.DemoEvent("Thanks for asking!");
    }
    private static void SampleEventHandler(object src, MyEventArgs mea)
    {
        Console.WriteLine(mea.Message);
    }
}
//---------------------------------------------------------
/*
This example produces the following results:

Hey there, Bruce!
How are you today?
I'm pretty good.
Thanks for asking!

*/

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 est pris en charge sur Windows Vista, Microsoft Windows XP SP2 et Windows Server 2003 SP1.

.NET Framework

Prise en charge dans : 3.0, 2.0

.NET Compact Framework

Prise en charge dans : 2.0

XNA Framework

Prise en charge dans : 1.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft