如何在 Visual Basic 6.0 中创建带有文本框的数组
Posted
技术标签:
【中文标题】如何在 Visual Basic 6.0 中创建带有文本框的数组【英文标题】:How to create an array with textboxes in Visual Basic 6.0 【发布时间】:2015-05-22 21:02:27 【问题描述】:我正在开发一个非常古老的 Visual Basic 项目。我必须重写项目的加载和保存功能。因此,我想创建一个包含所有相关文本框和复选框的控件数组。我想遍历该数组以便能够将数据保存到文本文件中或从中加载。
我在互联网上查看了如何定义这些数组,但它似乎对我不起作用。也许我做错了什么,因为我不是 Visual Basic 专家。
我试图让它这样工作:
Dim tbList As TextBox = Form1.Text1, Form1.Text3, _
Form1.Text10, Form1.Text11, Form1.Text12, Form1.Text13, _
Form2.Text1, Form2.Text3, Form2.Text4, Form2.Text5, _
Form2.Text10, Form2.Text11, Form2.Text12, Form2.Text13, _
Form3.Text1, Form3.Text3, Form3.Text4, Form3.Text5, _
Form3.Text10, Form3.Text11, Form3.Text12, Form3.Text13, _
Form3.Text17, Form3.Text18, Form3.Text19, Form3.Text20, _
Form4.Text1, _
Form5.Text1, Form5.Text2, Form5.Text3, _
Form6.Text2, _
Form7.Text2
或者用一个列表:
Dim tbList As New List(Of Controls)
问题是 Visual Basic 总是告诉我存在某种编译问题。这个问题在VB中没有真正的解释,所以我在这里问。
【问题讨论】:
【参考方案1】:您的代码无法编译,因为它是 vb.net 代码。不言而喻(但我还是会说)vb6 和 vb.net 不是一回事。
如果你想使用一个数组,你必须用比你的文本框数少一的数字来标注数组的尺寸(如果我计算正确的话,你的例子中有 32 个):
'// array is zero based so 0 to 31 = 32 items
Dim tbList(31) As TextBox
tbList(0) = Form1.Text1
tbList(1) = Form1.Text3
'//...I'll leave the rest as an exercise for the programmer
tbList(31) = Form7.Text2
Dim i As Integer
Dim tb As TextBox
'// To loop and work with each textbox
For i = 0 To UBound(tbList)
Set tb = tbList(i)
'// do something with tb
Next
不过,更简单的方法是使用集合:
Dim tbList As New Collection
tbList.Add Form1.Text1
tbList.Add Form1.Text3
'//...I'll leave the rest as an exercise for the programmer
tbList.Add Form7.Text2
Dim tb As TextBox
'// To loop and work with each textbox
For Each tb In tbList
'// do something with tb
Next
【讨论】:
【参考方案2】:是的,如果您想解决问题,可以使用集合。但是使用它的更简单的方法是使用 VB6(现在已过时)的控制数组实现。当我们发现 .Net 中不再提供它时,我们大多数人都感到失望!
在 VB6 中获取控件数组所需要做的就是创建一堆具有相同名称的控件。 (它们必须是相同类型的控件;您不能制作文本框和组合框等数组。)从一个文本框开始,将其命名为您想要的名称,然后复制它。系统将询问您是否要创建控件数组。说是的,想复制多少就复制多少。您会注意到 Index 属性不再为空,从 0 开始并从那里递增。您还会注意到所有事件处理程序都有一个“Index As Integer”参数。这样,您可以对所有这些事件使用相同的事件处理程序,评估 Index 参数以找出您的数组中的哪个成员正在触发事件。
Here 是它的旧文档。微软很难找到。 :)
【讨论】:
以上是关于如何在 Visual Basic 6.0 中创建带有文本框的数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在Visual Basic 6.0中使用主键在一个表中使用外键获取记录
如何使用Visual Basic 6.0将LPT1更改为LPT2?
如何在 QOpenGLTexture 中创建带 alpha 的纹理?
我将如何防止用户进入数据库中不存在的记录(使用 Microsoft DAO 2.5/3.51 的 Visual basic 6.0)