VB6,将整数添加到for循环中的控件名称

VB6,将整数添加到for循环中的控件名称,vb6,Vb6,我目前正在尝试学习VB6,并遇到了这个问题。 我想循环一个for循环,并给控件名添加一个数字 Dim I As Integer For I = 1 To 5 S = CStr(I) If TextS.Text = "" Then LabelS.ForeColor = &HFF& Else LabelS.ForeColor = &H80000012 End If Next I 此S需要添加到文本和标签中,因

我目前正在尝试学习VB6,并遇到了这个问题。 我想循环一个for循环,并给控件名添加一个数字

Dim I As Integer

For I = 1 To 5
    S = CStr(I)
    If TextS.Text = "" Then
        LabelS.ForeColor = &HFF&
    Else
        LabelS.ForeColor = &H80000012
    End If
Next I
S
需要添加到
文本和
标签中,因此颜色将在不需要使用5
If
Else
语句的情况下更改


我希望你能帮我解决这个问题。

从你下面的评论:


我的意思是:
如果Text1.text=”“
,那么我需要将这个
1
替换为变量
i
,这样for循环可以在我的5个文本框中循环,我的标签也是如此

在VB6中不能这样做(使用表达式查找变量以创建其名称)。(Edit:虽然该语句为true,但不能使用表达式中的名称查找表单控件并不是真的。请参阅下面的“可选项”。)

您可以做的是创建一个文本框数组,然后索引到该数组中。dev env甚至可以帮助您做到这一点:在dev env中打开表单并单击第一个文本框。将其名称更改为您希望数组具有的名称(可能是
文本框
)。然后单击下一个文本框并将其名称更改为相同的名称(
textboxs
)。dev env将询问您:

(不要问我为什么有一个上面有VB6的VM…)

单击“是”,然后可以重命名其他文本框
textboxs
,将它们添加到数组中。然后对标签执行同样的操作

那么您的代码应该如下所示:

For I = TextBoxes.LBound To TextBoxes.UBound
    If TextBoxes(I).Text = "" Then
        Labels(I).ForeColor = &HFF&
    Else
        Labels(I).ForeColor = &H80000012
    End If
Next
For I = 1 To 5
    If Me.Controls("Text" & I).Text = "" Then
        Me.Controls("Label" & I).ForeColor = &HFF&
    Else
        Me.Controls("Label" & I).ForeColor = &H80000012
    End If
Next
LBound
是控制数组的最低索引,
UBound
是最高索引。(您不能使用标准的
LBound
Ubound
将数组作为参数,因为控制数组不是非常普通的数组。)还要注意的是,没有必要将
I
放在
下一行,这是自VB4或VB5以来不需要的。不过,如果你喜欢直言不讳,你也可以

只需确保
文本框的数量与
标签的数量完全相同即可。或者,您可以创建一个由标签和文本框组成的用户控件,然后创建一个用户控件的控件数组


备选方案::您可以使用
控件
数组使用表达式产生的名称查找控件,如下所示:

For I = TextBoxes.LBound To TextBoxes.UBound
    If TextBoxes(I).Text = "" Then
        Labels(I).ForeColor = &HFF&
    Else
        Labels(I).ForeColor = &H80000012
    End If
Next
For I = 1 To 5
    If Me.Controls("Text" & I).Text = "" Then
        Me.Controls("Label" & I).ForeColor = &HFF&
    Else
        Me.Controls("Label" & I).ForeColor = &H80000012
    End If
Next
如果您在某个时候进行迁移,那么它的优点是可以映射到VB.Net中非常类似的结构


旁注:

我目前正在尝试学习VB6

(tl;dr-我建议学习其他东西,因为VB6已经过时,而且多年来一直不支持开发环境。)


VB6的开发环境已经停止使用并且不受支持多年(自2008年以来)。运行时仍然(我相信)受支持,因为使用它的应用程序数量之多,尽管最近的补丁似乎是。但是FWIW,学习VB.net或C#.net(或几种非微软语言中的任何一种)时,你会得到更好的回报,而不是VB6…

我的意思是:
如果Text1.text=”“,那么
我需要用变量i替换这个1,这样for循环就可以在我的5个文本框中循环,我的标签也是如此。我很抱歉对你这么不干净!!,这正是我所需要的。再次抱歉,我说得这么不清楚。您好,Tim SmitsNote:如果您计划将代码迁移到某个.NET平台,请不要使用控制数组。好的,我会记住这一点,但我认为不会发生,因为我只需要VB6实习。@user2479441:FWIW,我添加了一个迁移更好的替代方案,但基于以上内容,这并不重要。很遗憾,你的实习要求你使用非常过时的东西。