2010-11-23 4 views
13

comment écrire des classes de gestion d'événements personnalisés, si quelqu'un a une idée sur la façon de le créer ou si vous connaissez un bon article à ce sujet alors s'il vous plaît aidez-moi.Comment créer une classe de gestion d'événements personnalisés Comme EventArgs

Merci à l'avance

+3

Il y a beaucoup de choses sur google ... celui-ci a l'air plutôt bon et basique: http://www.switchonthecode.com/tutorials/csharp-snippet-tutorial-custom-event-handlers – Ozzy

+0

Qu'est-ce qu'un "événement de gestion classe"? –

Répondre

17

Je ne suis pas tout à fait sûr de ce que vous voulez dire, mais si vous parlez d'une classe dérivée EventArgs:

public class MyEventArgs : EventArgs 
{ 
    private string m_Data; 
    public MyEventArgs(string _myData) 
    { 
     m_Data = _myData; 
    } // eo ctor 

    public string Data {get{return m_Data} } 
} // eo class MyEventArgs 


public delegate void MyEventDelegate(MyEventArgs _args); 

public class MySource 
{ 
    public void SomeFunction(string _data) 
    { 
     // raise event 
     if(OnMyEvent != null) // might not have handlers! 
      OnMyEvent(new MyEventArgs(_data)); 
    } // eo SomeFunction 
    public event MyEventDelegate OnMyEvent; 
} // eo class mySource 

Hope this helps.

12

Je crois que ce dont vous parlez est un nouveau EventHandler pour un événement, plutôt qu'un EventArgs. Il y a deux façons simples de le faire. Tout d'abord, vous pouvez créer un événement qui utilise le EventHandler générique qui est le plus rapide et le plus simple d'utiliser une nouvelle classe EventArgs:

event EventHandler<MyEventArgs> sampleEvent; 

La deuxième façon est presque aussi simple, et probablement plus propre d'un point de vue de la syntaxe, est de créer un nouveau délégué qui a les arguments que vous voulez pour votre événement que vous pouvez utiliser tout de suite:

delegate void MyEventHandler(object sender, MyEventArgs e); 
event MyEventHandler sampleEvent; 

Et cette deuxième méthode vous permettra de réutiliser le gestionnaire plus tard.

+1

+1 pour afficher EventHandler façon de déclarer un événement –

+0

Merci pour la solution de gestionnaire d'événements générique. Je cherchais un constructeur personnalisé sur le EventHandler et je ne considérais même pas qu'il s'agissait d'une classe générique. Problème résolu. –

1

Vous déclarez l'événement comme celui-ci:

public delegate void MyEventDelegate(...); 
public static event MyEventDelegate MyEvent = delegate { }; 

Ensuite, pour déclencher l'événement:

MyEvent(...); 

L'événement est initialisée à un délégué anonyme de supprimer l'obligation de vérifier pour chaque null temps vous voulez élever l'événement.

Questions connexes