Entfernen Sie nur einen bestimmten event-handler in vb.net
Schreibe ich eine kleine 2D-engine, die verwendet Lua zu Steuern. Ich habe bereits die Einstellung von Ereignissen zwischen dem Lua und der VB.net für die letzten kleine Weile hier. Das problem, das ich erkannt habe, ist, dass ich kann nicht scheinen, um entfernen Sie die Ereignisse, die Schrauben schon ein paar Dinge (denn Sie werden aufgerufen, wenn Sie getan werden sollte, mit). Um dies zu beheben, wollte ich hinzufügen, dass einige Art und Weise zu entfernen, die bestimmten event-handler.
Ich weiß, wie das hinzufügen eines event-handler:
AddHandler Button1.Click, AddressOf Button1Clicked
Aber mit diesem im Verstand, ist Ihr ein Weg, um zu entfernen, die einen bestimmten event-handler in der VB.net?
Dank!
BEARBEITEN
Sorry, ich wusste nicht erklären das sehr gut:
Wenn ich diese habe:
public sub setupevent(byval func as LuaFunction)
AddHandler Me.event_mouseup, Sub(x As Integer, y As Integer)
func.Call(x, y)
End Sub
end sub
(Somewhere else)
setupevent(someLuaFunction)
setupevent(someOtherLuaFunction)
setupevent(JustAnotherLuaFunction)
Ist es ein Weg, um entfernen Sie nur eines dieser Ereignis-verbindungen on-the-fly?
- Mit lambda ist Ihr problem, Sie kann nicht entfernt werden. Tun Sie es auf die alte Weise mit einer separaten Methode als event-handler, und Sie werden kein problem haben, mit RemoveHandler.
- Könnten Sie bitte erklären, wie tun Sie das?
- Sie müssen erklären, warum Markus' Antwort nicht weiterhelfen konnte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie einfach die folgende Anweisung:
Beachten Sie, dass es möglich ist, zum registrieren des EventHandler mehr als einmal. Wenn dem so ist, werden Sie reveive die Veranstaltung so oft wie Sie registriert den handler. Deshalb entfernen der handler wird nur entfernen Sie eine Registrierung, und Sie erhalten weiterhin die Taste-event.
Edit:
übrigens: Dein Beispiel in deinem Edit sieht nicht wie ein standard-event-handler (sender As object, e As EventArgs)
Im Allgemeinen können Sie hinzufügen und entfernen Sie Griff mit dieser:
Irgendwo:
Du bist mit einem lambda-Ausdruck als Event-Handler, so dass Sie den Mangel auf seine spezifische Adresse zu entfernen.