2009-09-28 11 views
6

Ich bin komfortabel mit Vb.Net Ereignisse und Handler. Kann mir jemand helfen, wie man Ereignishandler in C# erstellt und Ereignisse auslöst.Wie Ereignis mit addHandler ausgelöst werden

+0

Sie müssen präziser sein. – tster

+2

Ich denke, er will nur wissen, wie man Ereignishandler hinzufügen und Ereignisse in C# auslösen kann, und er weiß bereits, wie man es in VB macht. –

+0

Mitesh, ich habe deine Frage ziemlich oft bearbeitet. Ich habe nur versucht, das Englisch zu verbessern. Wenn ich missverstanden habe, was du verlangst, tut es mir leid - bitte ändere es einfach zurück. – MarkJ

Antwort

3
public MyClass() 
    { 
     InitializeComponent(); 
     textBox1.LostFocus += new EventHandler(testBox1_LostFocus); 
    } 

    void testBox1_LostFocus(object sender, EventArgs e) 
    { 
     // do stuff 
    } 
4

In C# 2 und Sie up Event-Handler wie folgt hinzu:

yourObject.Event += someMethodGroup; 

Wo die Unterschrift von someMethodGroup entspricht der Delegierten Unterschrift von yourObject.Event.

In C# 1 Sie müssen explizit einen Event-Handler wie folgt erstellen:

yourObject.Event += new EventHandler(someMethodGroup); 

und nun die Signaturen der Methodengruppe, Ereignis und EventHandler müssen übereinstimmen.

10

Entwickler, die nur C# oder nur VB.Net kennen, wissen möglicherweise nicht, dass dies einer der größeren Unterschiede zwischen VB.NET und C# ist.

Ich werde shamelesssly copy diese nette Erklärung der VB-Ereignisse: VB verwendet eine deklarative Syntax zum Anhängen von Ereignissen. Die Handles-Klausel wird in dem Code angezeigt, der das Ereignis behandelt. Gegebenenfalls können mehrere Methoden dasselbe Ereignis behandeln, und mehrere Ereignisse können mit derselben Methode behandelt werden. Die Verwendung der Handles-Klausel basiert auf dem Modifikator WithEvents, der auf der Deklaration der zugrunde liegenden Variablen wie einer Schaltfläche erscheint. Sie können auch Property-Handler mit dem Schlüsselwort AddHandler anhängen und sie mit RemoveHandler entfernen. Zum Beispiel

Friend WithEvents TextBox1 As System.Windows.Forms.TextBox 

Private Sub TextBox1_Leave(ByVal sender As System.Object, _ 
    ByVal e As System.EventArgs) Handles TextBox1.Leave 
    'Do Stuff ' 
End Sub 

In C# können Sie die deklarative Syntax. Sie verwenden + =, die überladen ist, um wie der VB.Net-AddHandler zu fungieren. Hier ist ein Beispiel schamlos gestohlen von tster's answer:

public MyClass() 
{ 
    InitializeComponent(); 
    textBox1.Leave += new EventHandler(testBox1_Leave); 
} 

void testBox1_Leave(object sender, EventArgs e) 
{ 
    //Do Stuff 
} 
Verwandte Themen