看一个关于VB.NET编程的例子,在这里呢我使用另一种方法来说明当你建立和注册一个事件处理程序时到底发生了什么事情。一旦你明白事情是怎么回事,你也许会感激使用了更简洁的语法实现了相同的目标,一起来看看吧:
成都创新互联专注于企业营销型网站、网站重做改版、长白网站定制设计、自适应品牌网站建设、H5网站设计、商城网站建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为长白等各大城市提供网站开发制作服务。
- '建立银行帐号对象
- Dim account1 As New BankAccount()
- '注册事件处理程序
- AddHandler account1.LargeWithdraw, AddressOf AccountHandlers.LogWithdraw
- AddHandler account1.LargeWithdraw, AddressOf AccountHandlers.GetApproval
因为AddHandler语句期待一个委托对象作为第二个参数,你能使用速记语法--AddressOf操作符后紧跟目标处理方法的名字。当Visual Basic .NET编译器看到该语法时,它接着产生额外的代码来建立作为事件处理程序服务的委托对象。VB.NET编程语言中的AddHandler语句的补充是RemoveHandler语句。RemoveHandler需要的参数与AddHandler的相同,它的效果相反。它通过事件源调用remove_LargeWithdraw方法从已注册的处理方法列表中删除目标处理方法。
- Dim account1 As New BankAccount()
- '注册事件处理程序
- AddHandler account1.LargeWithdraw, AddressOf AccountHandlers.LogWithdraw
- '删除事件处理程序注册
- RemoveHandler account1.LargeWithdraw, AddressOf AccountHandlers.LogWithdraw
你已经看到了实现使用事件的回调设计需要的所有步骤了。代码显示了一个完整的应用程序,在该程序中已经注册了两个事件处理程序从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
结论
尽管使用事件的动机和一些语法与早期版本的VB.NET编程相比仍然没有改变,但是你不得不承认情况有很大不同了。你能看到,你对如何响应事件的控制力比以前大多了。如果你将使用委托编程,这就很实际了。
【编辑推荐】
本文名称:快捷简单的VB.NET编程事件方法介绍
转载来源:http://www.shufengxianlan.com/qtweb/news0/484000.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联