如果我有一个表单集合(myForms),并且我想在集合中切换两个表单的位置(比如第3和第4项),我希望以下代码可以工作:
Dim temp as Form
Set temp = myForms(3)
Set myForms(3) = myForms(4)
Set myForms(4) = temp
但这不起作用。它在第三行失败,错误“控件属性是只读的”。如果我将行更改为:
myForms(3) = myForms(4)
我得到了类型不匹配错误。
答案 0 :(得分:3)
如果myForms是标准集合:Dim myForms as New Collection
(实际上与控件集合不同)并且您已使用:myForms.Add frmOne, myForms.Add frmTwo
等添加了表单,那么(是)您需要使用添加和删除方法,因为集合引用添加的对象的方式。
否则解释是您实际上想要将一个表单替换为另一个表单,这是不允许的。您不能说:Set frmOne = frmTwo
,除非这些实际上是Form
类型的变量。
为什么需要切换订单?您是否在某处引用了项目编号?使用Dictionary来收集表单并通过键引用它们会很有用吗?很抱歉,在处理表单和表单实例时要考虑很多。 :-)
PS。类型不匹配只是因为两个项都是对象,需要“设置”。
答案 1 :(得分:2)
实际上,您无法在VB6中的控件集合中交换项目。您需要使用与每个相关联的Add
和Remove
函数。看看这篇文章:
http://support.microsoft.com/kb/190670
希望这有帮助!