所以,如果我说10个文本框,我需要填写,我必须重复循环10次,每次添加到不同的文本框。现在我有这样的事情:
If i = 0 Then
Shift0 = endTime - startTime
textStart0.text = startTime
textEnd0.text = endTime
chkBox0.checked = True
End If
我有8次重复这样做9次。我想做到这样,循环会在每次经过时将数字从0增加到
If i = (x) Then
Shift(x) = endTime - startTime
textStart(x).text = startTime
textEnd(x).text = endTime
chkBox(x).checked = True
End If
x = x + 1
如何将它放在循环中,以便每个循环中对象名称中的数字都会增加?
答案 0 :(得分:1)
这样的事情会起作用
For x = 0 to 9
Shift(x) = endTime - startTime
textStart(x).text = startTime
textEnd(x).text = endTime
chkBox(x).checked = True
next x
答案 1 :(得分:1)
控制阵列已成为过去,从VB6时代开始,不幸的是,正如您所发现的,它们仍然可以使用它们! 试试这个循环;
For i = 0 to 9
Shift0 = endTime - startTime ' Is Shift0 a control!?
FindControl("textStart" & i).Text = startTime
FindControl("textEnd" & i).Text = endTime
FindControl("chkBox" & i).Checked = True
Next
借助此功能帮助......
Private Function FindControl(pName As String) As Control
Dim vMatches = Me.Controls.Find(pName, True)
If vMatches IsNot Nothing AndAlso vMatches.Length > 0 Then Return vMatches(0)
Throw New Exception("Could not find the specified control!")
End Function
说了这么多之后,我强烈建议您重新思考一下您的表单和应用程序如何工作以避免这种情况!
答案 2 :(得分:0)
您可以将Controls
的{{1}}属性与索引一起使用。如果您的表单包含完全且仅包含10个文本框,则可以正常工作:
Control
如果您在表单中有其他控件,则无法保证索引(在设计进行过程中,您无法以1到10作为文本框进行回复)。因此,我建议您将它们放在面板中,并参考此面板的For i as Integer = 1 to 10
Form1.Controls(i).Text = "Box " + i.ToString()
Next
:
Controls
要了解有关VB.NET中循环的更多信息,请从此处开始:http://www.tutorialspoint.com/vb.net/vb.net_loops.htm