Lire en anglais

Partager via


EventHandler Délégué

Définition

Représente la méthode qui gérera un événement ne comportant aucune donnée d'événement.

C#
public delegate void EventHandler(object sender, EventArgs e);
C#
public delegate void EventHandler(object? sender, EventArgs e);
C#
[System.Serializable]
public delegate void EventHandler(object sender, EventArgs e);
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public delegate void EventHandler(object sender, EventArgs e);

Paramètres

sender
Object

Source de l'événement.

e
EventArgs

Objet qui ne contient aucune donnée d’événement.

Attributs

Exemples

L’exemple suivant montre un événement nommé ThresholdReached associé à un EventHandler délégué. La méthode affectée au EventHandler délégué est appelée dans la OnThresholdReached méthode .

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 identifie la 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 délégué est un délégué prédéfini qui représente spécifiquement une méthode de gestionnaire d’événements pour un événement qui ne génère pas de données. Si votre événement génère des données, vous devez utiliser la classe déléguée générique EventHandler<TEventArgs> .

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 1.1, 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