VB6,在for循环中为控件名称添加一个整数

时间:2014-09-08 10:46:56

标签: 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需要添加到TextLabel,以便更改颜色,而无需使用5 If Else条款

我希望你能帮助我。

1 个答案:

答案 0 :(得分:3)

根据您的评论:

  

我的意思是这样:If Text1.text = ""然后我需要将此1替换为变量I,因此for循环可以循环浏览我的5个文本框,并为我的标签

在VB6中,您不能这样做(使用表达式查找变量来创建其名称)。 (编辑:虽然该陈述是正确的,但您无法使用表达式中的名称查找表单控件。请参阅下面的“替代”。)< / p>

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

"You already have a control named 'TextBoxes'. do you want to create a control array?"

(不要问我为什么我的虚拟机周围有VB6 ......)

单击是,然后您可以重命名其他文本框TextBoxes以将其添加到阵列。然后对你的标签做同样的事情。

然后你的代码应该是这样的:

For I = TextBoxes.LBound To TextBoxes.UBound
    If TextBoxes(I).Text = "" Then
        Labels(I).ForeColor = &HFF&
    Else
        Labels(I).ForeColor = &H80000012
    End If
Next

LBound是控制数组的最低索引,UBound是最高的。 (您不能使用将数组作为参数的标准LBoundUbound,因为控件数组不是很正常的数组。)另请注意,不需要放置{{1}在I行上,自VB4或VB5以来不需要。但是,可以,如果你喜欢明确的话。

确保您与Next的{​​{1}}数字完全相同。或者,您可以创建一个由标签和文本框组成的用户控件,然后使用您的用户控件的控件数组。


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

Labels

如果你在某个时候进行迁移,这有一个优点就是映射到VB.Net中一个非常相似的构造。


旁注:

  

我目前正在尝试学习VB6 ......

(tl; dr - 我建议学习别的东西,VB6已经过时,多年来一直没有支持dev env。)

VB6的开发环境已停止使用多年(自2008年以来)。由于使用它的应用程序数量庞大,运行时仍然(我相信)受到支持,尽管最新的补丁似乎是from 2012。但是FWIW,你学习VB.net或C#.Net(或任何一种非Microsoft语言)的学习时间会更好,而不是VB6 ......