当前位置:编程学习 > VB >>

VB自制ACTIVEX控件的问题

假如我们写一个标准EXE程序,会有一个Form,名字叫Form1,Form1中有一个控件叫Label1。在这个工程中添加一个模块,模块中可以写Form1.Label1.Caption="Welcome"
但是如果是个UserControl工程,名字叫MyControl。在这个工程中添加一个Module,如何在这个Module中修改UserControl中的Label1呢?
我试了UserControl.label1.caption   MyControl.label1.caption 等等,都不对。

小弟没怎么写过控件,还望各位高手指点。

PS:我用的是VB6

--------------------编程问答-------------------- 关注,我也遇到过这个问题 --------------------编程问答-------------------- 自己给控件重新定义属性,来修改 --------------------编程问答-------------------- 怎么做?没明白。能说详细点么? --------------------编程问答-------------------- 2楼大侠,能说详细些么? --------------------编程问答-------------------- 不知道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控件的实例会出问题.
--------------------编程问答-------------------- 我其实是想在控件中使用一个API,timeSetEvent,这个API需要回调函数。我开始的时候把回调函数写在了控件模块里,但编译时通不过,提示:AddressOf错误。即便不是在ActiveX控件工程中,而是在一个标准EXE工程中,这个回调函数也不能写在Form模块里

可是,在ActiveX控件工程中添加一个Module,把回调函数写在Module里,却又不能控制UserControl了,真够郁闷的。 --------------------编程问答-------------------- 高手们,帮帮忙吧。我只是想在自己的控件里用一个timeSetEvent! --------------------编程问答-------------------- 在类中实现如何,:) --------------------编程问答-------------------- 其实我认为从某种意义上来说ACTIVEX跟编译好的exe是一样的,想象一下,你能这样来引用exe里面某个控件的属性吗,肯定不行

你必须要自己重新定义UserControl属性,在这个属性过程里面来修改label的属性 --------------------编程问答-------------------- 在 Module 中定义一个全局的 UserControl 变量,timeSetEvent 前先给该变量赋值(你的 UserControl 实例),回调函数中使用该变量访问控件属性。
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,