Lire en anglais

Partager via


EventHandler<TEventArgs> Délégué

Définition

Représente la méthode qui gérera un événement quand l’événement fournira des données.

C#
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);
C#
public delegate void EventHandler<TEventArgs>(object? sender, TEventArgs e);
C#
[System.Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e) where TEventArgs : EventArgs;
C#
[System.Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);

Paramètres de type

TEventArgs

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

Paramètres

sender
Object

Source de l'événement.

e
TEventArgs

Objet qui contient les données d'événement.

Attributs

Exemples

L’exemple suivant montre un événement nommé ThresholdReached. L’événement est associé à un EventHandler<TEventArgs> délégué.

C#
using System;

namespace ConsoleApplication3
{
    public class Program3
    {
        public static void Main()
        {
            Counter c = new(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 readonly int _threshold;
        private int _total;

        public Counter(int passedThreshold)
        {
            _threshold = passedThreshold;
        }

        public void Add(int x)
        {
            _total += x;
            if (_total >= _threshold)
            {
                ThresholdReachedEventArgs args = new()
                {
                    Threshold = _threshold,
                    TimeReached = DateTime.Now
                };
                OnThresholdReached(args);
            }
        }

        protected virtual void OnThresholdReached(ThresholdReachedEventArgs e)
        {
            ThresholdReached?.Invoke(this, e);
        }

        public event EventHandler<ThresholdReachedEventArgs>? ThresholdReached;
    }

    public class ThresholdReachedEventArgs : EventArgs
    {
        public int Threshold { get; set; }
        public DateTime TimeReached { get; set; }
    }
}

Remarques

Le modèle d’événement dans le .NET Framework est basé sur la présence d’un délégué d’événement qui connecte un événement à 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 qui fournit la réponse à l’événement.

  • Si vous le souhaitez, classe qui contient les données d’événement, si l’événement fournit des données.

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 liste de paramètres pour une méthode. Vous pouvez utiliser le type délégué pour déclarer une variable qui peut faire référence à n’importe quelle 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. Le premier paramètre de cette méthode est de type Object et fait référence à la instance qui déclenche l’événement. Son deuxième 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 deuxième paramètre est simplement la valeur du EventArgs.Empty champ. Sinon, le deuxième paramètre est un type dérivé de EventArgs et fournit tous les champs ou propriétés nécessaires pour contenir les données d’événement.

Le EventHandler<TEventArgs> délégué est un délégué prédéfini qui représente une méthode de gestionnaire d’événements pour un événement qui génère des données. L’avantage de l’utilisation EventHandler<TEventArgs> est que vous n’avez pas besoin de coder votre propre délégué personnalisé si votre événement génère des données d’événement. Vous fournissez simplement le type de l’objet de données d’événement en tant que paramètre générique.

Pour associer l’événement à la méthode qui gérera 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 Gestion et déclenchement d’événements.

Méthodes d’extension

GetMethodInfo(Delegate)

Obtient un objet qui représente la méthode représentée par le délégué spécifié.

S’applique à

Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Voir aussi