我的控件由两部分组成:1是ActiveX Control控件,2是一个窗体。我的控件工作方式如下,首先控件被激活,执行一部分代码,然后窗体弹出,执行窗体的代码,然后窗体Unload,调用控件的Public事件。问题出来了,我不知道如何才能在窗体Unload时,调用控件的公用事件。我试过UserControl.Falshlist,UsrManage.Falshlist(UsrManage为窗体名称),还是不行,请问该如何实现。谢谢!!!

解决方案 »

  1.   

    call UserControl_Falshlist
    eg:对commandbutton的click事件,call commandbutton_click
      

  2.   

    过程已经定义成Public,用call 过程名就可以直接调用了
      

  3.   

    过程已经定义成Public,用call 过程名就可以直接调用了
      

  4.   

    用call????? 好像不行!例如,在控件中,有如下的代码:Public Event MyEvent()Public Sub Mysub()
      MsgBox ("ok")
    End SubPrivate Sub UserControl_Initialize() '激活控件时发生此事件,弹出窗体.
      fout.Show  'fout是在控件工程中的一个窗体
    End Sub'当fout窗体关闭时,发生下面的事件,按大家的说法,用Call来调用这些自定义的事件、过程和公用的事件,但是,这三个都发生错误!!!
    Private Sub Form_Unload(Cancel As Integer)
     Call MyEvent '子函数未定义
     Call Mysub '子函数未定义
     Call UserControl_Click '子函数未定义
    End Sub按上面的代码,在工程中加载这个控件时,会正常打开fout窗体,当关闭窗体时,正常触发Unload事件,但是运行里面的代码全部出错!
    所以,不能用call来调事这些事件和过程!
      

  5.   

    正确应该是这样:
    (1)
    在控件工程中建一个模块,在模块中加入下面的代码:
    Public i As Integer(2)建一个用户控件,里面有如下的测试代码:Public Event MyEvent()Public Sub Mysub()
     RaiseEvent MyEvent
     Call UserControl_Click
    End SubPrivate Sub Timer1_Timer()
    If i = 1 Then
      Timer1.Interval = 0
      Call Mysub
    End If
    End SubPrivate Sub UserControl_Click()
    MsgBox ("控件的click事件发生")
    End SubPrivate Sub UserControl_Initialize()
    fout.Show
    Timer1.Interval = 10
    End Sub
    在这个控件中,要加入一个时间控件,用来检测变量i的值(3)
    在控件工程里新建一个窗体,命名为fout,里面有如下的代码:
    Private Sub Form_Load()
    i = 0
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    i = 1
    End Sub(4)添加一个工程,作测试用,在这个工程的窗体form1中加载上面的控件,可以发现,控件加载时,会弹出fout窗体,当fout窗体关闭时,弹出消息"控件的click事件发生"总结,只能在控件内部用call,不能在其外部用call来调用控件内部的过程和事件.
      

  6.   

    Private Sub Form_Unload(Cancel As Integer)
        Unload Me
        Call mysub
    End SubPrivate Sub mysub()
        MsgBox "OK!"
    End Sub这样就可以啊,为什么不行?以上的代码在同一窗体中!
      

  7.   

    如果控件在另一个窗体就用:
    call 窗体名.控件名_事件
      

  8.   

    控件不在任何窗体中,控件正在设计的UserControl中,就属于用户自定义的控件,没有在任何窗体中创建实例。如果说控件现在有名称的话,它的名称就是UserControl。