电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> VB编程>>VB面向对象的程序设计-产生“事件”:

VB面向对象的程序设计-产生“事件”

来源:网络 | 2007-3-23 | (有4002人读过)

产生“事件” :
据我所知,面向对象里并没有“事件”这个概念,想必是因为控件的原因才在 VB5 以后在类里加入了“自定义事件”的能力。因为加入这种能力,VB 里的类的功能更加强大,使用也更加方便。       

正像刚才的例子里所显示的,要产生“事件”的话,要像变量定义一样首先定义“事件”:“Public Event 摔了下去()”,然后在我们希望产生事件的地方用“RaiseEvent”来调用“事件”。想一想,如果把“RaiseEvent”改为“Call”,是否就和过程的调用方式一模一样了?所以我说“事件”其实是一个“回调函数(过程)”,只要把它理解成一个过程调用就很可以理解了。       

当然,“事件”和过程还是有很大的不同的,不然就不需要用“RaiseEvent”以区别于“Call”了。其实使用事件也很简单,刚才的演示已经可以说明问题了,下面我们仍然用那只可怜的“麦克狼”来试验一下事件不同于过程的一个最重要的特点。不过首先明确一下,“Public WithEvents 麦克 As 狼”只是定义了一个可以存储对象的变量,“New 狼”才真正产生了这个对象,其实可以用“Public 麦克 As New 狼”的方法定义一个真正的对象,不过不能用“Public WithEvents 麦克 As New 狼”的方式,所以要使用事件的话,还是要用“Set 麦克 = New 狼”这样的方式。仍然用刚才的窗体,不过代码变化一下,另外还需要再建立一个新的窗体,同样新窗体上有一个名为“运动”的按钮。原窗体“Form1”代码做如下修改:       

Option Explicit      
Public WithEvents 麦克 As 狼      

Private Sub Form_Load()      
    Set 麦克 = New 狼      
    Form2.Show      
End Sub      

Private Sub 麦克_扑了过去()      
    Me.Caption = "麦克门牙磕掉了"      
End Sub      

Private Sub 麦克_摔了下去()      
    Me.Caption = "麦克摔扁了"      
End Sub      

Private Sub 运动_Click()      
    麦克.体重 = 100      
    麦克.扑食      
End Sub      

新窗体“Form2”代码如下:       

Option Explicit      
Private WithEvents 麦克 As 狼      

Private Sub Form_Load()      
    Set 麦克 = Form1.麦克      
End Sub      

Private Sub 麦克_扑了过去()      
    Me.Caption = "麦克门牙磕掉了"      
End Sub      

Private Sub 麦克_摔了下去()      
    Me.Caption = "麦克摔扁了"      
End Sub      

Private Sub 运动_Click()      
    麦克.体重 = 30      
    麦克.扑食      
End Sub      

现在,让我们运行此程序,出现两个窗体,把它们位置摆好,单击“Form1”的按钮,我们会发现两个窗体的“Caption”都变成了“麦克摔扁了”;然后单击“Form2”的按钮,现在两个窗体的“Caption”又都变成了“麦克门牙磕掉了”。       

正像我们见到的,事件并非只是可以在一个窗体产生效果,一个对象的事件可以向每一个此对象的引用发出事件,类似这样的例子在 VB 的“联机手册”里也有,不过它产生的是一只食肉恐龙的吼叫的事件,这一事件导致许多其它的动物闻风丧胆,四散奔逃。顺便说一下,不只类,控件也是一样可以使用这种方法的。       
VB编程热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号