【发布时间】: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