Vb6 将控件添加到集合会导致将其从控件数组中删除

Vb6 将控件添加到集合会导致将其从控件数组中删除,vb6,garbage-collection,runtime-error,Vb6,Garbage Collection,Runtime Error,所以我有一个表单,它有各种各样的控件,都是在设计时添加的。 当表单忙于执行任务时,我希望禁用(作为一个组)此页面中的某些控件,以便用户无法进行干预 为此,我创建了一个集合对象,并将相关控件添加到其中。这些控件以表单加载的形式添加到此集合。(如果有任何动态控件,我会在创建时将它们添加到此集合中) 但是,我开始出现间歇性的运行时错误,在它们自己的控件数组中找不到对象(它们仍然被加载,正如您在表单上看到的那样,并与它们交互)。下面可以看到表单_加载 Private Sub Form_Load()

所以我有一个表单,它有各种各样的控件,都是在设计时添加的。 当表单忙于执行任务时,我希望禁用(作为一个组)此页面中的某些控件,以便用户无法进行干预

为此,我创建了一个集合对象,并将相关控件添加到其中。这些控件以表单加载的形式添加到此集合。(如果有任何动态控件,我会在创建时将它们添加到此集合中)

但是,我开始出现间歇性的运行时错误,在它们自己的控件数组中找不到对象(它们仍然被加载,正如您在表单上看到的那样,并与它们交互)。下面可以看到表单_加载

Private Sub Form_Load()
    Dim Item As Variant
    SelectScanCombo.Enabled = False

    LowResolutionTextBox(0).Text = Target_LO_Res
    HighResolutionTextBox(0).Text = Hi_Res_Resolution

    Set InterfaceObjects = New Collection
    InterfaceObjects.Add GoButton
    InterfaceObjects.Add FilePathBox
    InterfaceObjects.Add HighResEnabled

    For Each Item In LowResolutionTextBox
        InterfaceObjects.Add Item
    Next Item
    For Each Item In HighResolutionTextBox
        InterfaceObjects.Add Item
    Next Item
    For Each Item In ResolutionModeSelect
        InterfaceObjects.Add Item
    Next Item

    RunInProgress = False

End Sub
InterfaceObject是表单的私有成员。 在“InterfaceObjects.Add GoButton”行的LowResolutionTextBox(0)中断(在某些表单加载上,而不是在所有表单加载上)更改时添加一个要中断的手表

当我为InterfaceObject创建一个新的集合实例时,是否发生了一些奇怪的事情?为什么?是什么导致(甚至可能导致)控件在未被擦除的情况下从其原始控件阵列中丢失


(这一切都是在IDE中运行时发生的。未使用compliled版本进行测试)

您是否在
表单卸载中将集合设置为


以前,当我将控件数组元素引用到变量时,我没有在卸载时将该变量设置为“无”。

那么,当窗体被卸载,垃圾收集清除引用该控件的变量时,它也会清除该控件吗?似乎值得调查,将尝试谢谢。(目前正在使用变通方法)它并不总是发生在某些情况下,我不确定确切的时间,但重要的是,无论何时使用引用控件或对象的变量,在卸载时都应该清理该变量以释放引用