VB中自定義事件和事件處理
阿新 • • 發佈:2019-02-15
一個包含事件的類:ClsWithEvents
ClsWithEvents類中,有兩個屬性Width和Height,這兩個屬性改變時會分別觸發對應的Changed事件。
在 Public Event 聲明瞭兩個事件委託的原型
Public Class ClsWithEvents Private mWidth As Integer Private mHeight As Integer ' 事件委託的原型 Public Event WidthChanged(ByVal newWdith As Integer) Public Event HeightChanged(ByVal newHeight As Integer) Public Property Width() As Integer Get Return mWidth End Get Set(ByVal value As Integer) If value <> mWidth Then RaiseEvent WidthChanged(value) ' 觸發WidthChanged事件 End If mWidth = value End Set End Property Public Property Height() As Integer Get Return mHeight End Get Set(ByVal value As Integer) If value <> mHeight Then RaiseEvent HeightChanged(value) ' 觸發HeightChanged事件 End If mHeight = value End Set End Property End Class
事件的兩種不同處理方法:
方法一、WithEvents關鍵字
Public Class Form1 Private WithEvents objClsWithEvents As New ClsWithEvents Private Sub objClsWithEvents_HeightChanged(ByVal newHeight As Integer) _ Handles objClsWithEvents.HeightChanged ' 處理 objClsWithEvents 的 HeightChanged 事件 End Sub Private Sub objClsWithEvents_WidthChanged(ByVal newWdith As Integer) _ Handles objClsWithEvents.WidthChanged ' 處理 objClsWithEvents 的 WidthChanged 事件 End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click objClsWithEvents.Width = 200 objClsWithEvents.Height = 200 End Sub End Class
方法二、AddHandler關鍵字
Public Class Form1 Private Sub ClsWithEvents_HeightChanged(ByVal newHeight As Integer) ' 處理 ClsWithEvents 物件的 HeightChanged 事件 End Sub Private Sub ClsWithEvents_WidthChanged(ByVal newWdith As Integer) ' 處理 ClsWithEvents 物件的 WidthChanged 事件 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim objClsWithEvents As New ClsWithEvents AddHandler objClsWithEvents.HeightChanged, AddressOf ClsWithEvents_HeightChanged AddHandler objClsWithEvents.WidthChanged, AddressOf ClsWithEvents_WidthChanged objClsWithEvents.Height = 200 objClsWithEvents.Width = 200 End Sub End Class