【问题标题】:Replace control arrays before migrating from vb6从 vb6 迁移之前替换控制数组
【发布时间】:2008-10-09 22:02:52
【问题描述】:

为了避免在移民的同时设置更多障碍 增强现有的 vb6 程序。 有没有办法在不使用它们的情况下实现与 vb6 中的控件数组相同的功能?

【问题讨论】:

    标签: vb6 vb6-migration


    【解决方案1】:

    在 .NET 中,您有一个标记属性。您还可以拥有由多个控件引发的相同委托句柄事件。将新控件的 Tag 属性设置为 Index。

    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 继承的类,它可以自动完成一些工作。我发现在转换过程中使用 Tag 比依赖控件名称更不容易出错。但是,不要绝对感谢这一点。您必须决定是控件名称方法还是标签作为索引方法是最好的。

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

    【讨论】:

    • 我认为你的意思是vb6中的控制数组不是需要在迁移之前解决的问题吗?
    • 您在进行迁移时必须注意这一点,因为您必须手动执行所有操作,因此可能会出现很多细微的错误。
    【解决方案2】:

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

    VBA 用户窗体缺乏对控件数组的支持,所以为什么不 Google 寻求有关如何使用 VBA、用户窗体、Excel 等模拟控件数组的建议。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-31
        • 1970-01-01
        相关资源
        最近更新 更多