Assembly : mscorlib (dans mscorlib.dll)
Syntaxe<SerializableAttribute> _ Public Delegate Sub EventHandler(Of TEventArgs As EventArgs) ( _ sender As Object, _ e As TEventArgs _ )
Dim instance As New EventHandler(Of TEventArgs)(AddressOf HandlerMethod)
[SerializableAttribute] public delegate void EventHandler<TEventArgs> ( Object sender, TEventArgs e ) where TEventArgs : EventArgs
[SerializableAttribute] generic<typename TEventArgs> where TEventArgs : EventArgs public delegate void EventHandler ( Object^ sender, TEventArgs e )
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.
Paramètres
- sender
Source de l'événement.
- e
EventArgs qui contient les données de l'événement.
NotesLe 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 liste 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.
ExempleL'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(Of T) delegate. Imports System Imports System.Collections.Generic '--------------------------------------------------------- Public Class MyEventArgs Inherits EventArgs Private msg As String Public Sub New(messageData As String) msg = messageData End Sub 'New Public Property Message() As String Get Return msg End Get Set msg = value End Set End Property End Class 'MyEventArgs '--------------------------------------------------------- Public Class HasEvent ' Declare an event of delegate type EventHandler of ' MyEventArgs. Public Event SampleEvent As EventHandler(Of MyEventArgs) Public Sub DemoEvent(val As String) RaiseEvent SampleEvent(Me, New MyEventArgs(val)) End Sub 'DemoEvent End Class 'HasEvent '--------------------------------------------------------- Public Class Sample Public Shared Sub Main() Dim he As New HasEvent() AddHandler he.SampleEvent, AddressOf SampleEventHandler he.DemoEvent("Hey there, Bruce!") he.DemoEvent("How are you today?") he.DemoEvent("I'm pretty good.") he.DemoEvent("Thanks for asking!") End Sub 'Main Private Shared Sub SampleEventHandler(src As Object, _ mea As MyEventArgs) Console.WriteLine(mea.Message) End Sub 'SampleEventHandler End Class 'Sample '--------------------------------------------------------- ' 'This example produces the following results: ' 'Hey there, Bruce! 'How are you today? 'I'm pretty good. 'Thanks for asking! '
// 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! */
Plates-formesWindows 98, Windows 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
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Voir aussiRéférence
System, espace de nomsEventHandler, délégué
EventArgs, classe
Delegate, classe
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ