【问题标题】:VB6 vs VB.NET naming restrictions for winformswinforms 的 VB6 与 VB.NET 命名限制
【发布时间】:2014-09-05 18:55:56
【问题描述】:

我有一个 VB6 用户控件,其中包含名为 txtIndexData(0)、txtIndexData(1)、txtIndexData(2) 等的文本框。 用户控件的代码使用 for 循环和递增计数器对每个文本框(或特定数字文本框)执行操作,代码如下:

        ' Check each of the text boxes to see if
        ' any are currently editing a text constant.  If
        ' so, go back to the previous scroll setting
        ' and allow the text box to finish before scrolling
        For I = 0 To LINK_BOX_SIZE - 1
        If txtIndexData(I).Locked = False Then
                CurrentScrollValue = vsbIndex.Value
                vsbIndex.Value = LastScrollValue
                Call txtIndexData_LostFocus(I)
                vsbIndex.Value = CurrentScrollValue
            End If
        Next I

当试图在 VB.Net 中复制它时,txtIndexData(1) 显然是文本框的无效标识符(因为我猜是括号)。我应该如何命名这些,以便我可以编写基于插入名称的变量(如上面的我)影响某些文本框的函数?

对不起,我缺乏 VB6/VB.NET/WinForms 知识。我知道我可能在这里遗漏了一些东西。感谢您的宝贵时间。

【问题讨论】:

  • 不幸的是,.Net 不支持控制数组,就像在 VB6 中一样(我确实想念它们)。您现在要做的是自己将它们放入数组/列表/集合中(代码隐藏)或将它们放入单个容器中,例如面板,然后遍历面板的 controls 集合。
  • @Steve 谢谢!只要有控制数组到谷歌就可以让我了解这里发生了什么。我有点失落。我现在将研究如何按照您所说的去做。
  • 有一个 VB6 兼容层/程序集,它允许控制数组,但是没有它们你会好得多,而且没有什么不幸的。
  • 您可能想查看DataRepeater control。这允许您的表单在重复布局中显示任意数量的控件,方法是将文本框等控件添加到转发器的 ItemTemplate,如链接中的示例所示。

标签: .net vb.net winforms vb6 vb6-migration


【解决方案1】:

我在 .Net 中写了类似的东西,因为我在 .Net 之前也先学习了 vb6 :)

txtIndexData1, txtIndexData2 ..... 作为控件的名称。 现在循环看起来像这样[假设文本框控件直接放在表单上]

For I = 0 To LINK_BOX_SIZE - 1
        Dim obj As TextBox = CType(Me.Controls("txtIndexData" & I), TextBox)
        If obj.ReadOnly = False Then
            CurrentScrollValue = vsbIndex.Value
            vsbIndex.Value = LastScrollValue
            Call txtIndexData1_LostFocus(obj, New System.EventArgs())
            vsbIndex.Value = CurrentScrollValue
        End If
Next I

唯一的痛苦是自己命名控件,因为 vb6 会自动增加索引,但也有一个解决方案。只需创建一个用户控件并直接将继承更改为文本框,然后将控件命名为txtIndexData。现在编译你的程序。它应该出现在工具箱上。将其拖到您的项目中。当你创建它的副本时,它会自动递增到txtIndexData1txtIndexData2txtIndexData3 ...等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 2012-11-09
    • 2021-09-16
    • 2017-12-20
    相关资源
    最近更新 更多