由于未知原因,VB6与UserControl的交互方式与其他对象不同。
我有一个类需要保存图形界面,用户控件并需要设置为稍后从get方法使用。我尝试过很多东西,比如使用特殊类VBControlExtender但没有任何成功。
这是我到目前为止所做的:
'...
Private WithEvents m_uGUI As VBControlExtender
Public Property Get GUI() As VBControlExtender
Set GUI = m_uGUI
End Property
Public Property Set GUI(ByVal uValue As VBControlExtender)
Set m_uGUI = uValue
End Property
'...
Set myObject.GUI = new ucMyUserControl
有什么想法吗?
答案 0 :(得分:5)
从此错误的帮助(它提到ListBox和Form,但同样适用于UserControls):
New关键字只能应用于 一个可创造的对象......你试过 实例化一个Automation对象,但是 它不是一个可创造的对象。对于 例如,您尝试创建一个新的 通过指定列表框的实例 ListBox中的一个语句就好了 以下:[示例代码剪辑] ListBox和Form是类名,而不是 特定的对象名称。您可以使用 他们指定一个变量 是某个对象的引用 类型...但你不能使用它们 实例化对象本身 一个Set语句。你必须指定一个 具体对象,而不是 通用类名,在Set中 语句:
您要做的是创建一个UserControl数组并根据需要加载新的UserControl。将UserControl的Index属性设置为0以使其成为一个数组,然后使用Load语句创建新实例:
Load ucMyUserControl(1)
Set myObject.GUI = ucMyUserControl(1)
当您需要更多时,只需指定一个新的上限:
Load ucMyUserControl(2)
Load ucMyUserControl(3)
...
当你完成它们后,卸载它们:
Unload ucMyUserControl(3)
Unload ucMyUserControl(2)
...
答案 1 :(得分:0)
我相信VBControlExtender can only be used with dynamically added controls(即Controls.Add)不是内在控件。为什么不能使用ucMyUserControl
作为类型?