首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

关于raiseevent的运用

2013-01-17 
关于raiseevent的使用本帖最后由 bcrun 于 2012-12-01 12:33:01 编辑第一次发帖……我最近要用到raiseevent

关于raiseevent的使用
本帖最后由 bcrun 于 2012-12-01 12:33:01 编辑 第一次发帖……

我最近要用到raiseevent来触发其他事件。但是触发后事件的内容没有执行。代码如下,望前辈指点一二

Private WithEvents Doit() as dothat
Public Event Doit()
Dim I As Integer
Dim dothat

Private Sub Doit()    
    Me.Caption = "now event Doit"
    MsgBox "look"        
End Sub

Private Sub CWButton1_ValueChanged(ByVal Value As Boolean)

    If CWButton1.Value = True Then
        Timer1.Enabled = True
    Else
        Timer1.Enabled = False
    End If
    
End Sub

Private Sub Form_Load()
    Timer1.Interval = 600
    Timer1.Enabled = False    
End Sub

Private Sub Timer1_Timer()
    Label1.Caption = Time
    I = I + 1
    If I > 5 Then
        RaiseEvent Doit
    End If
    Me.Caption = I
End Sub


[解决办法]
Private WithEvents Doit() as dothat
这是VB6代码吗?WithEvents 怎么能使用数组?

要使用事件机制,必须
在类模块或者控件或者窗口模块中定义事件 (event 声明)并且在适当的时候raiseevent

比如 class1中
event doit(参数表)
..............

sub aSub(....)
  raiseevent doit(参数)
end sub


在窗口模块或者其他类、控件模块中

dim withevents x as class1

sub form_load
  set x=new class1  'withevents声明时,不能在声明中直接使用new
end sub

private sub [color=#FF0000x_doit(参数表)][/color]
  '处理事件代码
end sub


[解决办法]
引用:
引用:
注意,如果控件中raiseevent,那么在其容器中,则不需要声明变量,可以直接进行事件处理但是我上面的代码中,执行后并没有成功执行事件中的内容。但是从raiseevent那一句已经执行了。这个语句只能在类模块中用吗?找过好些例子都是用在类模块中的。


类模块,窗口模块,控件模块中都可以,就是不能用于bas模块,其它都可以

热点排行