在 VB6 中出现一些奇怪的行为,我正在撒网寻找一些答案。
我有一个集合,用于存储一组相同类型的自定义表单。
Dim formCollection As New Collection
Public Sub AddForm()
Dim newForm As New frmCustomForm
formCollection.Add(newForm)
End Sub
然后在另一个例程中,我遍历集合。但是,当我将变体转换回自定义表单类时,出现类型转换错误(“运行时错误‘13’:类型不匹配”)。
Public Sub Foo()
Dim someForm As frmCustomForm
Dim iterator As Integer
For iterator = 1 To formCollection.Count
Set someForm = formCollection.Item(iterator) ' The error appears here
someForm.SomeProperty = 3
Next iterator
End Sub
虽然最初它属于自定义表单类,但当它被存储到集合中时,它似乎失去了它的类型并且不能被转换回来。此外,如果我在尝试转换存储形式之前放置一个断点,然后通过 Locals 检查对象,它会丢失所有类特定信息,例如属性名称,这些信息仅显示为“Item 1”、“Item 2”、“项目 3' 等
有什么想法吗?
最佳答案
在 VB6 中不能像这样使用括号。试试这个
formCollection.Add newForm
或者这个
Call formCollection.Add(newForm)
在您的情况下,括号强制 VB6 评估对象引用的默认属性,并将其存储在集合中,而不是表单引用中。
通常您会在 IDE 中像这样在左括号之前获得一个额外的空间
formCollection.Add (newForm)
这会让你更加怀疑。
关于collections - VB6:在集合中存储和检索表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7237259/