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
}
- 1. Wie "AddHandler" versucht, ein Ereignis von einer externen Bibliothek abzufangen
- 2. Wie Ereignis von ActiveX-Steuerelement ausgelöst werden
- 3. Wie kann ich AddHandler mit OnCommand in ASP.NET anwenden
- 4. Kann Ereignis im Fokus ausgelöst werden?
- 5. FileSystemWatcher geändert Ereignis wird nicht ausgelöst
- 6. Werden Ereignisse ausgelöst, ausgelöst oder ausgelöst?
- 7. Kann das onbeforeunload-Ereignis programmgesteuert ausgelöst werden?
- 8. Wie kann ein benutzerdefiniertes Ereignis korrekt ausgelöst werden?
- 9. Wie Start Ereignis der Web Api-Anwendung ausgelöst werden?
- 10. addTarget kein Ereignis ausgelöst
- 11. Plupload - Ereignis nicht ausgelöst
- 12. timer_Elapsed() Ereignis nicht ausgelöst
- 13. JQGrid Sortierung - wie onSortCol Ereignis ausgelöst wird
- 14. WPF - LayoutUpdated Ereignis wiederholt ausgelöst
- 15. JavaScript/jQuery: Ereignis ausgelöst zweimal
- 16. gibt es keine mousemove - oder, wie AddHandler für die Maus bewegen Ereignis verwenden
- 17. Parameter an Addhandler senden?
- 18. Hat window.onload Ereignis bereits ausgelöst
- 19. DotNetOpenAuth OnLoggedIn Ereignis nie ausgelöst
- 20. ohne Maus per Drag & Drop - ändern, wie das Ereignis ausgelöst werden (erhöhen Drop/Drag-Ereignis programmatisch)
- 21. ASP.NET HttpApplication.EndRequest-Ereignis nicht ausgelöst
- 22. Promise.all() - Tun Sie etwas nachdem mehrere Ereignis-Listener ausgelöst werden
- 23. Javascript onmouseup Ereignis nicht wie erwartet ausgelöst
- 24. Spring BadCredentials Ereignis nicht ausgelöst
- 25. "Backbutton" Ereignis wird nicht ausgelöst
- 26. jQuery, keyup Ereignis nicht ausgelöst
- 27. C# Kreuzthread-Ereignis nicht ausgelöst
- 28. Marionette - initialisieren Ereignis nicht ausgelöst
- 29. Nested Gitter nicht ausgelöst Ereignis
- 30. Box 'SessionAuthenticated' Ereignis nicht ausgelöst
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