如何交换VB6集合中的项目?

如何交换VB6集合中的项目?,vb6,collections,Vb6,Collections,如果我有一个表单集合(myForms),并且我想切换集合中两个表单的位置(例如,第3项和第4项),我希望以下代码可以工作: Dim temp as Form Set temp = myForms(3) Set myForms(3) = myForms(4) Set myForms(4) = temp 但这不起作用。它在第三行失败,错误为“Controls property is read only”。如果我将该行更改为: myForms(3) = myForms(4) 我得到了一个类型不匹配

如果我有一个表单集合(myForms),并且我想切换集合中两个表单的位置(例如,第3项和第4项),我希望以下代码可以工作:

Dim temp as Form
Set temp = myForms(3)
Set myForms(3) = myForms(4)
Set myForms(4) = temp
但这不起作用。它在第三行失败,错误为“Controls property is read only”。如果我将该行更改为:

myForms(3) = myForms(4)

我得到了一个类型不匹配的错误。

您实际上无法在VB6中的控件集合中交换项目。您需要使用与每个相关联的
Add
Remove
功能。查看本文:


希望这有帮助

在VB6中,实际上无法交换控件集合中的项。您需要使用与每个相关联的
Add
Remove
功能。查看本文:


希望这有帮助

如果myForms是标准集合:

Dim myForms as New Collection
(这实际上与控件集合不同)并且您使用以下方式添加了表单:

myForms.Add frmOne, myForms.Add frmTwo
etc然后(是的),由于集合引用添加对象的方式,确实需要使用Add和Remove方法

否则,解释是您实际上想要用另一个表单替换一个表单,这是不允许的。你不能说:

Set frmOne = frmTwo
除非这些实际上是
类型的变量

你为什么要改变订单?您是否在某处引用了项目编号?使用字典收集表单并通过键引用它们是否有用


类型不匹配的原因很简单,因为两个项目都是对象,需要“设置”

如果myForms是标准集合:

Dim myForms as New Collection
(这实际上与控件集合不同)并且您使用以下方式添加了表单:

myForms.Add frmOne, myForms.Add frmTwo
etc然后(是的),由于集合引用添加对象的方式,确实需要使用Add和Remove方法

否则,解释是您实际上想要用另一个表单替换一个表单,这是不允许的。你不能说:

Set frmOne = frmTwo
除非这些实际上是
类型的变量

你为什么要改变订单?您是否在某处引用了项目编号?使用字典收集表单并通过键引用它们是否有用


类型不匹配的原因很简单,因为两个项目都是对象,需要“设置”

本文是关于向表单动态添加控件的。它与交换集合中的项有什么关系?本文是关于向窗体动态添加控件的。它与交换集合中的项目有什么关系?顺序很重要,因为在程序中,列表中多次填充了表单,用户应该能够重新排列表单的顺序。如果我可以简单地交换集合中表单的顺序,那么每次填充列表时,顺序都会反映用户的更改。顺序很重要,因为在程序中,列表多次填充表单,用户应该能够重新排列表单的顺序。如果我可以简单地交换集合中表单的顺序,那么每次填充列表时,顺序都会反映用户的更改。