1 利用一个类,先定义控件,再定义控件的事件,完成事件的重新定义,达到封装的目的。或者在事件之后再执行一个事件。
Public Class clsEvent
Private WithEvents objBtn As Button
Public Event btnIsClick(ByVal Sender As Object, ByVal intID As Integer)
Private clicktime As Integer
Public Property Btn As Button
Get
Return objBtn
End Get
Set(value As Button)
objBtn = value
End Set
End Property
Private Sub objBtn_Click(sender As Object, e As EventArgs) Handles objBtn.Click ‘ 通过控件的单击事件的句柄指向本事件,所以单击后,代码会自动转向到本事件后开始执行
clicktime += 1
objBtn.BackColor = Color.Violet
RaiseEvent btnIsClick(objBtn, clicktime) ’通过 RaiseEvent,可以调用在主窗体的自定义的 “btnIsClick”事件
End Sub
Private Sub objBtn_MouseEnter(sender As Object, e As EventArgs) Handles objBtn.MouseEnter
objBtn.BackColor = Color.Thistle
End Sub
End Class
2 调用事件
Public Class Form1
Private WithEvents mobjCls As New clsEvent
Private WithEvents mobjCls2 As New clsEvent
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
mobjCls.Btn = Button1
mobjCls2.Btn = Button2
End Sub
Private Sub mobjCls_btnIsClick(Sender As Object, intID As Integer) Handles mobjCls.btnIsClick
MsgBox(Sender.Name & intID)
End Sub
Private Sub mobjCls2_btnIsClick(Sender As Object, intID As Integer) Handles mobjCls2.btnIsClick
MsgBox(Sender.Name & intID)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MsgBox("hello world")
End Sub
End Class
备注:执行顺序 Button1_Click------->objBtn_Click--------->mobjCls_btnIsClick
概念的拓展:函数的封装拓展到事件的封装。类成员由普通成员拓展到控件对象。
意义:利用类来封装对象的属性,在绑定的时候,只有一个属性变化,就可以自动触发其他属性的变化,不用再另外编写计算其他属性值的代码。利用类来封装控件的事件,可以达到整体控制控件行为的效果。有利于整体的更新和维护。