我目前正在尝试学习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
需要添加到Text
和Label
,以便更改颜色,而无需使用5 If
Else
条款
我希望你能帮助我。
答案 0 :(得分:3)
根据您的评论:
我的意思是这样:
If Text1.text = ""
然后我需要将此1
替换为变量I
,因此for循环可以循环浏览我的5个文本框,并为我的标签
在VB6中,您不能这样做(使用表达式查找变量来创建其名称)。 (编辑:虽然该陈述是正确的,但您无法使用表达式中的名称查找表单控件。请参阅下面的“替代”。)< / p>
您可以做的是创建一个文本框数组,然后索引到该数组。 dev env甚至可以帮助您:在开发环境中打开表单并单击第一个文本框。将其名称更改为您希望数组具有的名称(可能是TextBoxes
)。然后单击下一个文本框并将其名称更改为相同的内容(TextBoxes
)。开发环境会问你:
(不要问我为什么我的虚拟机周围有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
是最高的。 (您不能使用将数组作为参数的标准LBound
和Ubound
,因为控件数组不是很正常的数组。)另请注意,不需要放置{{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 ......