• 您的位置我爱Aspx >> VB.Net >> Henry的VB.NET之旅(十四)—动态关联事件与处理程序
  • Henry的VB.NET之旅(十四)—动态关联事件与处理程序

  • 作者:aspxer  来源:internet  日期:2007-5-20 13:59:40  关键字:.net
  • Module Module1

    Public Class CHenry

    Public Event EventHR() @# 声明一个事件

    Sub CauseSomeEvent()

    RaiseEvent EventHR() @# 引发事件

    End Sub

    End Class

    Dim obj As New CHenry()

    Sub Obj_EventHR() @#在Handles之后声明事件

    MsgBox("事件处理器捕捉到了事件.") @#处理事件.

    End Sub

    Sub Main()

    AddHandler obj.EventHR, AddressOf Obj_EventHR

    obj.CauseSomeEvent() @#调用对象去引发事件

    End Sub

    End Module

    “看到有什么不同吗?”大李转过身来问我。

    “主要有两个不同,首先是obj的定义不再用WithEvents来标识了,因此事件处理程序obj_EventHR()也就不能通过Handles关键字来声明事件,也就是说EventHR事件与事件处理程序没有用WithEvent-Handles进行关联;其次,是使用了AddHandle和Addressof……”说到这,我也没有词了,只能语焉不详。

    “呵呵,我来帮你接着说。”大李拍了拍我的肩膀,接着说“先说Addressof吧,AddressOf 运算符创建的是一个指向指定的过程的过程委托。我们刚才说过委托相当于一个函数指针,那么AddressOf就是委托的操作符,通过它能得到委托的引用。”

    见到我稍稍明白了,大李又接着说:“光看AddHandle能够将obj.EventHR事件与Obj_EventHR事件处理程序关联起来的作法,你肯定不了解我所说的动态关联好处在哪里。因为我没提到另一个方法RemoveHandler。它的使用方法和AddHandle是一样的,比如:

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:Henry的VB.NET之旅(十三)—标准事件处理程序
    下一篇:Henry的VB.NET之旅(十五)—动态事件处理方法