2016-08-24 1 views

Répondre

2

Ce sont deux choses différentes

event Déclare un événement:

https://msdn.microsoft.com/en-us/library/8627sbea.aspx

EventHandler définit la méthode qu'un événement soulèvera:

https://msdn.microsoft.com/en-us/library/system.eventhandler(v=vs.110).aspx

EventHandler<TEventArgs> est un emballage pratique pour votre commande EventArgs:

https://msdn.microsoft.com/en-us/library/db0etb8x(v=vs.110).aspx

Différentes façons de vous abonner à un événement

using System; 

namespace ConsoleApplication3 
{ 
    internal class Program 
    { 
     private static void Main(string[] args) 
     { 
      // using a method 
      MyEvent += Program_MyEvent; 

      // using EventHandler, possible but not mandatory 
      MyEvent += new EventHandler(Target); 

      // using lambda syntax 
      MyEvent += (sender, eventArgs) => { }; 

      // using delegate 
      MyEvent += delegate (object sender, EventArgs eventArgs) { }; 

      // using delegate, signature is optional actually 
      MyEvent += delegate { }; 
     } 

     private static void Target(object sender, EventArgs eventArgs) 
     { 
     } 

     private static void Program_MyEvent(object sender, EventArgs e) 
     { 
     } 

     public static event EventHandler MyEvent; 
    } 

} 
+0

Ainsi est-il une diffrence entre faire + = EventHandler et + = Méthode? – Spaghetti

+0

Non, vous pouvez mais ce n'est pas nécessaire, voir ma réponse mise à jour. – Aybe

+1

@Spaghetti - Non, chacun des cinq styles '+ =' de cette réponse fait exactement la même chose - ils attachent une instance de délégué à l'événement. – Enigmativity