您的位置:学习中国 推荐教程 VB编程 正文
原作者:kuku 添加时间:2007-06-02 原文发表:2007-06-02 人气:112 来源:互联网

本文章共6190字,分4页,当前第4页,快速翻页:
 
-----------------------------------------------------------------------------------------------------------------------------------------------

本文提示:《解析Visual Basic.NET事件编程(4)》是本站编辑们为广大网友精选的实用文章,本文阐述了关于文章的相关理论,相对来说专业性强,但是本文只是针对于某个问题提出的见解与论述,未必能辐射到相关问题的方方面面,所以本文处理问题的方法仅仅为您提供一些参考。更多问题请查阅学习中国网其他栏目哦.

-----------------------------------------------------------------------------------------------------------------------------------------------



'建立银行帐号对象
Dim account1 As New BankAccount()

'建立并注册一个事件处理程序
Dim handler1 As LargeWithdrawHandler
handler1 = AddressOf AccountHandlers.LogWithdraw
AddHandler account1.LargeWithdraw, handler1

  当你为LargeWithdraw事件使用AddHandler注册一个事件处理程序时,Visual Basic .NET编译器扩展这些代码来调用注册方法add_LargeWithdraw。一旦包含AddHandler语句的代码执行了,事件处理程序便就位了并且为通知做好了准备。因此无论什么时候BankAccount对象引发一个LargeWithdraw事件,LargeWithdraw方法都将执行。

  在最后一个例子中,我使用长语法来说明当你建立和注册一个事件处理程序时到底发生了什么事情。但是,一旦你明白事情是怎样的,你也许会感激使用了更简洁的语法实现了相同的目标:

'建立银行帐号对象
Dim account1 As New BankAccount()

'注册事件处理程序
AddHandler account1.LargeWithdraw, AddressOf AccountHandlers.LogWithdraw
AddHandler account1.LargeWithdraw, AddressOf AccountHandlers.GetApproval

  因为AddHandler语句期待一个委托对象作为第二个参数,你能使用速记语法--AddressOf操作符后紧跟目标处理方法的名字。当Visual Basic .NET编译器看到该语法时,它接着产生额外的代码来建立作为事件处理程序服务的委托对象。

  Visual Basic .NET 语言中的AddHandler语句的补充是RemoveHandler语句。RemoveHandler需要的参数与AddHandler的相同,它的效果相反。它通过事件源调用remove_LargeWithdraw方法从已注册的处理方法列表中删除目标处理方法。

Dim account1 As New BankAccount()

'注册事件处理程序
AddHandler account1.LargeWithdraw, AddressOf AccountHandlers.LogWithdraw

'删除事件处理程序注册
RemoveHandler account1.LargeWithdraw, AddressOf AccountHandlers.LogWithdraw

  你已经看到了实现使用事件的回调设计需要的所有步骤了。图4中的代码显示了一个完整的应用程序,在该程序中已经注册了两个事件处理程序从BankAccount对象的LargeWithdraw事件接收回调通知。

Delegate Sub LargeWithdrawHandler(ByVal Amount As Decimal)

Class BankAccount
Public Event LargeWithdraw As LargeWithdrawHandler
Sub Withdraw(ByVal Amount As Decimal)
'如果需要的话就发送通知
If (Amount > 5000) Then
RaiseEvent LargeWithdraw(Amount)
End If
'执行撤消
End Sub
End Class

Class AccountHandlers
Shared Sub LogWithdraw(ByVal Amount As Decimal)
'把撤消信息写入日志文件
End Sub
Shared Sub GetApproval(ByVal Amount As Decimal)
'阻塞直到管理者批准
End Sub
End Class

Module MyApp
Sub Main()
'建立银行帐号对象
Dim account1 As New BankAccount()
'注册事件处理程序
AddHandler account1.LargeWithdraw, _
AddressOf AccountHandlers.LogWithdraw
AddHandler account1.LargeWithdraw, _
AddressOf AccountHandlers.GetApproval
'做一些触发回调的事情
account1.Withdraw(5001)
End Sub
End Module

图4.用于回调通知的基于事件的设计

  结论

  尽管使用事件的动机和一些语法与早期版本的Visual Basic相比仍然没有改变,但是你不得不承认情况有很大不同了。你能看到,你对如何响应事件的控制力比以前大多了。如果你将使用委托编程,这就很实际了
 
本文章更多内容<<上一页 - 1 - 2 - 3 - 4
本页地址
收藏到:[收藏夹] [百度搜藏] [新浪ViVi] [POCO网摘] [ 和讯网摘] [好哦网摘] [Google书签]
               
[搜狐网摘] [365Key网摘] [天极网摘] [我摘] [博采网摘] [igooi网摘]
相关文章

VB.NET中对象的克隆
VB.Net编程入门之Hello World 入门篇
VB 神童教程第二章第九节——综合示例三
VB 神童教程第二章第八节——组合框控件
VB 神童教程第二章第七节——列表框控件
VB 神童教程第二章第六节——综合示例二
VB 神童教程第二章第五节——单选与复选控件
VB 神童教程第二章第四节-CommandButton控件
VB 神童教程第二章第三节——综合示例一
VB 神童教程第二章第三节——综合示例一
在VB.NET中获得功能加强的分类和查询数组
vb.net例程集锦
向SQL Server数据库添加图片和文字
多个窗体之间如何互相调用
如何拖动没有边框的窗体?
怎么让窗体透明后,控件不透明?
Video/ Audio压缩数据流播放技术
VB程序中处理随机事件
VB编程的必备技巧
VB6制作Win98风格的工具栏

相关评论


本文章所属分类:首页 推荐教程 VB编程   VB编程