VB6,将整数添加到for循环中的控件名称
我目前正在尝试学习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需要添加到文本和标签中,因
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
需要添加到文本和标签中,因此颜色将在不需要使用5If
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,我添加了一个迁移更好的替代方案,但基于以上内容,这并不重要。很遗憾,你的实习要求你使用非常过时的东西。