Henry的VB.NET之旅(十三)—标准事件处理程序
点击次数:59 次 发布日期:2008-11-06 08:07:47 作者:源代码网
|
源代码网推荐 源代码网推荐 韩睿 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐“感兴趣就好!”大李微微点点头,然后问我道,“你知道程序是怎么知道哪些对象可以引发何种事件,以及怎么样把事件和事件处理程序关联起来?” 源代码网推荐 源代码网推荐见到我迷茫的眼神,大李用鼠标点击打开被Region合起来的“Windows 窗体设计器生成的代码”,指着中间的一句自动生成的代码: 源代码网推荐 源代码网推荐 Friend WithEvents Button1 As System.Windows.Forms.Button 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐“当你在设计窗口往窗体上添加了一个按钮后,会自动在代码中加入这句代码,Friend 关键字授予对一个或多个所声明的编程元素的友元访问权限。那么WithEvent是干什么的?” 源代码网推荐 源代码网推荐我立刻在帮助中查找,有了: 源代码网推荐 源代码网推荐WithEvents 关键字指示被声明的对象变量引用可以引发事件的类实例。 源代码网推荐 源代码网推荐“明白了,”我也不能总傻听着,“在声明对象的时候用WithEvents来进行标识,再在事件处理程序中的过程声明结尾处使用 Handles 关键字将就可以处理由使用 WithEvents 关键字声明的对象变量所引发的事件了。” 源代码网推荐 源代码网推荐“没错,你看来我写一段代码,使用的就是WithEvent-Handles的方法来处理事件。类名为CHenry吧,它内含一个事件EventHR。” 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐Module Module1 源代码网推荐 源代码网推荐 Public Class CHenry 源代码网推荐 源代码网推荐 Public Event EventHR() " 声明一个事件 源代码网推荐 源代码网推荐 Sub CauseSomeEvent() 源代码网推荐 源代码网推荐 RaiseEvent EventHR() " 引发事件 源代码网推荐 源代码网推荐 End Sub 源代码网推荐 源代码网推荐 End Class 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 WithEvents Obj As New CHenry() "模块或类级别的声明 源代码网推荐 源代码网推荐 Sub Obj_EventHR() Handles Obj.EventHR "在Handles之后声明事件 源代码网推荐 源代码网推荐 MsgBox("事件处理器捕捉到了事件.") "处理事件. 源代码网推荐 源代码网推荐 End Sub 源代码网推荐 源代码网推荐 Sub Main() 源代码网推荐 源代码网推荐 Obj.CauseSomeEvent() "调用对象去引发事件 源代码网推荐 源代码网推荐 End Sub 源代码网推荐 源代码网推荐End Module 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐“你要注意的是怎么样通过RaiseEvent来引发事件,另外一个很简单的问题也需要注意的是,事件处理程序的命名一般是用‘对象名_事件名’的方式。”大李边写程序边指点说。 源代码网推荐 源代码网推荐“事件的声明和引发是只能在一个层次内,还是可以在派生类里引发基类的事件?”我不由好奇地问。 源代码网推荐 源代码网推荐“你开始学会思考了,”大李不知道是不是在嘲笑我,“VB.NET要求必须在声明事件的范围内引发事件。派生类不能引发从基类继承的事件,但是可以处理基类引发的事件。我们可以来看一个示例。”大李马上对刚写的代码进行了修改: 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐Module Module1 源代码网推荐 源代码网推荐 Public Class CHenry 源代码网推荐 源代码网推荐 Public Event EventHR() " 声明一个事件 源代码网推荐 源代码网推荐 Sub CauseSomeEvent() 源代码网推荐 源代码网推荐 RaiseEvent EventHR() " 引发事件 源代码网推荐 源代码网推荐 End Sub 源代码网推荐 源代码网推荐 End Class 源代码网推荐 源代码网推荐 Public Class Class2 ‘从Chenry派生而来的类 源代码网推荐 源代码网推荐 Inherits CHenry 源代码网推荐 源代码网推荐 Sub Obj_EventHR() Handles MyBase.EventHR 源代码网推荐 源代码网推荐 MsgBox("事件处理器捕捉到了事件.") "处理事件. 源代码网推荐 源代码网推荐 End Sub 源代码网推荐 源代码网推荐 End Class 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 WithEvents Obj As New Class2() "模块或类级别的声明 源代码网推荐 源代码网推荐 Sub Main() 源代码网推荐 源代码网推荐 Obj.CauseSomeEvent() "调用对象去引发事件 源代码网推荐 源代码网供稿. |
