我有1600个文本框。我想要这样的东西:
Textbox1.Text="1"
Textbox2.Text="2"
Textbox3.Text="3"
Textbox4.Text="4"
...
我知道这不起作用,但我需要一个这样的循环:
For i as integer = 0 to 1600
(textbox+i).text=i
Next
我找不到任何关于这件事。我不知道这是否可能。任何想法?
答案 0 :(得分:3)
For i as integer = 0 to 1600
CType(Me.Controls("Textbox" + i.ToString()), TextBox).Text = i.ToString()
Next
希望这会奏效。
答案 1 :(得分:3)
如果你想从预定义的值范围循环,那么这应该可以解决这个问题:
For i = 1 to 1600
Dim txt As TextBox = TryCast(Me.Controls("TextBox" & i.ToString), TextBox)
If txt IsNot Nothing
txt.Text = i.ToString()
End If
Next
答案 2 :(得分:0)
首先,让我们列举所有文本框:
var textboxes = this.Controls.OfType<TextBox>()
.ToArray();
现在我们有了文本框,让我们迭代它们并设置它们的编号:
for(int i = 0; i < textboxes.Count(); i++)
{
var textbox = textboxes[i];
textbox.Text = i.ToString();
}
答案 3 :(得分:0)
只是添加另一个选项(虽然我不推荐它 - 它很慢!!!!)你可以使用Reflection
在循环中按名称获取它们。
e.g:
For tb As Integer = 1 To 1600
Dim textBox As TextBox = GetTextBoxByReflection("TextBox" & tb.ToString())
textBox.Text = tb.ToString()
Next
答案 4 :(得分:0)
你也可以循环所有控件......
Dim tb As TextBox
For Each ctrl As Control In form1.Controls
If ctrl.GetType.ToString = GetType(TextBox).ToString Then
tb = CType(ctrl, TextBox)
tb.Text = ctrl.ID.Substring(7)
End If
Next