假如我们写一个标准EXE程序,会有一个Form,名字叫Form1,Form1中有一个控件叫Label1。在这个工程中添加一个模块,模块中可以写Form1.Label1.Caption="Welcome"
但是如果是个UserControl工程,名字叫MyControl。在这个工程中添加一个Module,如何在这个Module中修改UserControl中的Label1呢?
我试了UserControl.label1.caption   MyControl.label1.caption 等等,都不对。小弟没怎么写过控件,还望各位高手指点。PS:我用的是VB6

解决方案 »

  1.   

    不知道LZ为什么要这样做,在标准模块中操作UserControl中的东西 -_-
    有个很WS的方法可以实现'先在Module中声明一个PUBLIC变量,如下:
    Public pubLabel as Label
    '
    '把这个代码添加到UserControl中去
    Private Sub UserControl_Initialize()
        Set pubLabel=UserControl.Label1
    End Sub'这样在Module中可以使用pubLabel对象来改变UserControl中Label1的属性
    '.
    '像这样:
    pubLabel.caption="很WS的方法"'这样破坏了UserControl的封装,
    '而且..估计在另一个工程中使用了多个MyControl控件的实例会出问题.
      

  2.   

    我其实是想在控件中使用一个API,timeSetEvent,这个API需要回调函数。我开始的时候把回调函数写在了控件模块里,但编译时通不过,提示:AddressOf错误。即便不是在ActiveX控件工程中,而是在一个标准EXE工程中,这个回调函数也不能写在Form模块里可是,在ActiveX控件工程中添加一个Module,把回调函数写在Module里,却又不能控制UserControl了,真够郁闷的。
      

  3.   

    高手们,帮帮忙吧。我只是想在自己的控件里用一个timeSetEvent!
      

  4.   

    其实我认为从某种意义上来说ACTIVEX跟编译好的exe是一样的,想象一下,你能这样来引用exe里面某个控件的属性吗,肯定不行你必须要自己重新定义UserControl属性,在这个属性过程里面来修改label的属性
      

  5.   

    在 Module 中定义一个全局的 UserControl 变量,timeSetEvent 前先给该变量赋值(你的 UserControl 实例),回调函数中使用该变量访问控件属性。