2010-11-23 10 views
13

Wie schreibt man benutzerdefinierte Event-Handling-Klassen, wenn jemand Ahnung hat, wie man es erstellt oder wenn Sie einen guten Artikel darüber wissen, dann bitte helfen Sie mir.So erstellen Sie eine benutzerdefinierte Event-Handling-Klasse Wie EventArgs

Vielen Dank im Voraus

+3

Es gibt eine Menge da draußen auf Google ... dieses sieht ziemlich gut und grundlegend aus: http://www.switchonthecode.com/tutorials/csharp-snippet-tutorial-custom-event-handlers – Ozzy

+0

Was ist ein "Ereignisbehandlung Klasse"? –

Antwort

17

Ich bin nicht ganz sicher, was du meinst, aber wenn Sie eine EventArgs abgeleitete Klasse im Gespräch sind etwa:

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 

Hoffnung hilft dies.

12

Ich glaube, was Sie meinen, ist ein neuer EventHandler für ein Event, anstatt ein EventArgs. Es gibt zwei einfache Möglichkeiten, dies zu tun. Zum einen können Sie ein Ereignis erstellen, die die generische Eventhandler verwendet, das ist die schnellste und einfachste Weg, um eine neue EventArgs Klasse verwenden:

event EventHandler<MyEventArgs> sampleEvent; 

Die zweite Möglichkeit, fast so einfach ist, und wahrscheinlich ordentlicheres aus einer Syntax Sicht ist ein neu Delegierten zu schaffen, die die Argumente, die Sie für Ihre Veranstaltung haben wollen, die Sie sofort verwenden können:

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

Und diese zweite Methode, die Sie später den Handler wieder verwenden kann.

+1

+1 für den EventHandler Art und Weise der Erklärung eines Ereignisses –

+0

Danke für die generische Event-Handler-Lösung. Ich suchte nach einem benutzerdefinierten Konstruktor auf dem EventHandler und dachte nicht einmal, dass es sich um eine generische Klasse handelte. Problem gelöst. –

1

Sie erklären das Ereignis wie folgt aus:

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

Dann um das Ereignis zu erhöhen:

MyEvent(...); 

Das Ereignis wird an einem anonymen Delegaten initialisiert die Anforderung zu entfernen, für null jeder Zeit zu überprüfen Sie möchten das Ereignis auslösen.

Verwandte Themen