VB.net 中,如何判断一个事件是否已被绑定...

zjh2702 2010-09-29 11:46:30
VB.net 中,如何判断一个事件是否已被绑定...
...全文
260 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-09-29
  • 打赏
  • 举报
回复
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


反射才能比较完善的实现检查事件是否注册过。
wuyq11 2010-09-29
  • 打赏
  • 举报
回复
AddHandler Button1.Click, AddressOf Test
使用GetInvokeList来获得委托连
http://bytes.com/topic/visual-basic-net/answers/348728-eventhandlerlist-question
机器人 2010-09-29
  • 打赏
  • 举报
回复
不用判断,直接Remove也不会出错。
pjw100 2010-09-29
  • 打赏
  • 举报
回复
调用一下就知道是否被绑定了。

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧