Fre*_*nöw 3 vb.net event-handling
我正在编写一个使用Lua来控制它的小型2D引擎.在过去的这段时间里,我一直在Lua和VB.net之间设置事件.我已经意识到,问题在于我似乎无法删除那些搞砸了很多东西的事件(因为它们在应该完成时被调用).要解决这个问题,我想添加某种方法来删除特定的事件处理程序.
我知道如何添加事件处理程序:
AddHandler Button1.Click, AddressOf Button1Clicked
Run Code Online (Sandbox Code Playgroud)
但考虑到这一点,他们是一种在VB.net中删除特定事件处理程序的方法吗?
谢谢!
编辑
对不起,我没有解释得这么好:
如果我有这个:
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)
Run Code Online (Sandbox Code Playgroud)
有没有办法在运行中只删除其中一个事件连接?
只需使用以下语句:
RemoveHandler Button1.Click, AddressOf Button1Clicked
Run Code Online (Sandbox Code Playgroud)
请记住,可以多次注册EventHandler.如果是这样,您将在注册处理程序时经常注意该事件.因此删除处理程序将只删除一个注册,您仍然会收到按钮事件.
编辑:
顺便说一句:您的编辑中的示例看起来不像标准事件处理程序(发件人作为对象,e作为EventArgs)
通常,您可以使用以下方法添加和删除句柄:
Public Sub FirstHandler(sender As object, e As EventArgs)
' …
End Sub
Public Sub SecondHandler(sender As object, e As EventArgs)
' …
End Sub
Run Code Online (Sandbox Code Playgroud)
某处:
AddHandler Button1.Click, AddressOf FirstHandler
AddHandler Button1.Click, AddressOf SecondHandler
RemoveHandler Button1.Click, AddressOf FirstHandler
' Only SecondHandler subscribed now
Run Code Online (Sandbox Code Playgroud)
您使用lambda表达式作为EventHandler,因此您缺少其特定地址来删除它.
| 归档时间: |
|
| 查看次数: |
9160 次 |
| 最近记录: |