VB.net 中,如何判断一个事件是否已被绑定...
VB.net 中,如何判断一个事件是否已被绑定... --------------------编程问答-------------------- 调用一下就知道是否被绑定了。--------------------编程问答-------------------- 不用判断,直接Remove也不会出错。 --------------------编程问答-------------------- AddHandler Button1.Click, AddressOf Test
使用GetInvokeList来获得委托连
http://bytes.com/topic/visual-basic-net/answers/348728-eventhandlerlist-question --------------------编程问答--------------------
Imports System.Reflection
Module Module1
Sub Main()
Dim obj As New EventTestClass
'注册事件
AddHandler obj.MyEvent, Function(v As Integer) v + 1
'反射获取事件委托列表
Dim fi As FieldInfo = obj.GetType().GetField("MyEventEvent", BindingFlags.Instance Or BindingFlags.NonPublic)
Dim del As System.Delegate = fi.GetValue(obj)
'如果注册过,则不是Nothing
If del Is Nothing Then
Console.WriteLine("尚未注册事件")
Else
Console.WriteLine("注册事件了")
End If
Console.ReadKey()
End Sub
Public Class EventTestClass
Public Delegate Sub MyEventHandler(ByVal value As Integer)
Public Event MyEvent As MyEventHandler
Public Sub Foo()
RaiseEvent MyEvent(88)
End Sub
End Class
End Module
反射才能比较完善的实现检查事件是否注册过。
补充:.NET技术 , VB.NET