从vb6迁移之前,请更换控制阵列

从vb6迁移之前,请更换控制阵列,vb6,vb6-migration,Vb6,Vb6 Migration,以避免在迁移的同时建造更多的障碍 增强现有的vb6程序。 有没有一种方法可以在不使用控件数组的情况下实现与vb6中控件数组相同的功能?当然,您可以在代码中创建自己的控件数组:)不过,也许更好的容器是集合或字典对象。根据您想要做的事情,您也许可以使用自定义集合类为控件创建一个包装类。。。但是在.NET中使用泛型创建对象模型要好得多,所以现在最好在VB6中保持简单 VBA用户表单缺乏对控件数组的支持,那么为什么不在谷歌上搜索关于如何用VBA、用户表单、Excel等模拟控件数组的建议呢 顺便说一句,您

以避免在迁移的同时建造更多的障碍 增强现有的vb6程序。
有没有一种方法可以在不使用控件数组的情况下实现与vb6中控件数组相同的功能?

当然,您可以在代码中创建自己的控件数组:)不过,也许更好的容器是集合或字典对象。根据您想要做的事情,您也许可以使用自定义集合类为控件创建一个包装类。。。但是在.NET中使用泛型创建对象模型要好得多,所以现在最好在VB6中保持简单

VBA用户表单缺乏对控件数组的支持,那么为什么不在谷歌上搜索关于如何用VBA、用户表单、Excel等模拟控件数组的建议呢


顺便说一句,您是否尝试过将控件数组从VB6迁移到VB.NET?只是一个猜测,但考虑到它们在VB中常用,我认为它们处理得相当好。

在.NET中,您有一个标记属性。您还可以让相同的委托处理多个控件引发的事件。将新控件的Tag属性设置为索引

Private Sub MyButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click,Button2.Click

        Dim Btn As Button = CType(sender, Button)
        Dim Index As Integer = CType(Btn.Tag, Integer)
' Do whatever you were doing in VB6 with the Index property

End Sub
您还应该看看VB6.Compatibility中继承自BaseControlArray的类,它自动化了一些工作。我发现在转换过程中使用标记比依赖控件名更不容易出错。不过,不要把这当作绝对的感谢。您必须决定控件名方法是最佳方法还是标记为索引方法


在这两种情况下,您都可以轻松地设置.NET,将多个控件引发的事件汇集到一个处理程序中

在过去的几天里,我做了一些阅读和实验,似乎在vb6中没有其他方法可以完成控制数组所做的事情。 如果您已经知道在设计时运行时要创建的控件的数量,那么您可以“使用事件”声明私有控件对象变量,并在运行时动态地实例化这些变量。如果您需要创建更多的代码,那么您可以这样做,但是这些代码不会触发任何代码来响应事件。
据我所知,这是问题的症结所在。无法将代码与vb6中动态创建的控件的事件动态关联。

我认为您的观点是,vb6中的控件数组不是迁移之前需要解决的问题?在迁移时,您必须意识到这一点,因为由于您必须做一切,因此可能会出现很多细微错误手动。