这是我的代码
Function GenerateInterface()
Dim ObjectsArray() As VB.Control
Dim TmpCtrl As VB.Control
ReDim ObjectsArray(1)
For Each TmpCtrl In Me.Controls
If TmpCtrl.Container Is frConfigVars(0) Then
Set ObjectsArray(UBound(ObjectsArray) - 1) = TmpCtrl
ReDim Preserve ObjectsArray(UBound(ObjectsArray) + 1)
End If
Next TmpCtrl
For i = 1 To UBound(Variables) - 1 'global array containing how many frames I need
Load frConfigVars(i)
frConfigVars(i).Left = 0
frConfigVars(i).top = frConfigVars(i - 1).top + frConfigVars(i - 1).Height
frConfigVars(i).Visible = True
For x = 0 To UBound(ObjectsArray) - 1
Set TmpCtrl = ObjectsArray(x)
Load TmpCtrl(i) '<-- crashes here
'stuff to move and view new object
Next x
Next i
End Function
它基本上将一个控件数组加载到框架中存在的0索引对象,以便让我在dinamycally中加载它我需要多少次但是我无法从变量本身加载一个新控件。
我有点为什么加载崩溃,我猜TmpCtrl包含(示例)txtbox(0)而不是txtbox,我需要加载新对象,对吗? 如果是这样,我该如何加载新控件?
我无法从头开始创建对象,因为它们中有很多并且定位会很糟糕 我不能用他们的名字给他们打电话,因为随着时间的推移,我会添加/删除一些东西,所以我不想再次触摸这个功能
谢谢
答案 0 :(得分:3)
好的,我实际上是自己做的!
要访问对象数组本身,我只需要更改
Set TmpCtrl = ObjectsArray(x)
到
Set TmpCtrl = Me.Controls(ObjectsArray(x).Name)