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
Antwort
public MyClass()
{
InitializeComponent();
textBox1.LostFocus += new EventHandler(testBox1_LostFocus);
}
void testBox1_LostFocus(object sender, EventArgs e)
{
// do stuff
}
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.
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
}
Sie müssen präziser sein. – tster
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. –
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