概念:
1.事件是对象发送的消息,以发信号通知操作的发生。操作可能是由用户交互(例如鼠标单击)引起的,也可能是由某些其他的程序逻辑触发的。引发(触发)事件的对象叫做事件发送方。捕获事件并对其作出响应的对象叫做事件接收方。
在事件通信中,事件发送方类不知道哪个对象或方法将接收到(处理)它引发的事件。所需要的是在源和接收方之间存在一个媒介(或类似指针的机制)。.NET Framework 定义了一个特殊的类型(
2.委托是一个可以对方法进行引用的类。与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调。虽然委托具有许多其他的用途,但这里只讨论委托的事件处理功能。
下面是我的一个练习:
Public Delegate Sub EventNameEventHandler(ByVal sender As Object, ByVal e As EventArgs) '建立事件委托
public class EventT
public event testE() '定义事件
publci sub testEvent()
raiseevent testE() '引发事件
sub
end class
'测试代码
public withevents tt as EventT
private sub tt_TestE() Handles EventT.testE '定义事件的过程
response.write ("调用了事件")
end sub
tt.TestEvent() '调用EvenT类中的过程,testEvent()过程又引发的testE()事件
可以延伸一下:比如你在visual studio 环境下建一asp.net项目,并在其下的窗体上拖一个textbox
在代码中你将回看到这样一行代码
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
'触发事件
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Response.Write("textbox1触发了事件textbox1_textchanged")
End Sub
你也可以自定义个触发的事件名称
Private Sub TextBox1_TextChanged34(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Response.Write("textbox1触发了事件textbox1_textchanged")
End Sub
浙公网安备 33010602011771号