所以我有一个包含各种控件的表单,所有控件都在设计时添加。 我希望在表单忙于执行任务时禁用(作为一个组)此页面中的某些控件,以便用户无法进行干扰。
为此,我创建了一个添加相关控件的集合对象。它们的控件在form_load中添加到此集合中。 (如果有任何动态控件,我会将它们添加到此集合中,因为它们也已创建)。
然而,我开始得到间歇性的运行时错误,在自己的控件数组中找不到对象(它们仍然被加载,因为您可以在窗体上看到它们并与它们交互)。 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
InterfaceObjects是表单的私有成员。 添加一个手表来断开LowResolutionTextBox(0)的更改会在(InterfaceObjects.Add GoButton
行中断(在某些表单上加载,而不是全部)当我为interfaceobjects创建一个新的集合实例时,是否会发生奇怪的事情?为什么?是什么导致(甚至可能导致)控件在没有被删除的情况下从原始控制阵列中丢失?
(这一切都发生在IDE中运行时。没有使用compliled版本进行测试)
答案 0 :(得分:1)
您是否在Nothing
处将收藏集设为Form_Unload
?
在我将控制数组元素引用到变量之前,我发生了这种情况,并且在卸载时我没有将变量设置为空。