如何在循环中增加对象名称?
How to increase object name in a loop?
我有 1600 textboxes.I 想要这样的东西 :
Textbox1.Text="1"
Textbox2.Text="2"
Textbox3.Text="3"
Textbox4.Text="4"
...
我知道这行不通,但我需要这样的循环:
For i as integer = 0 to 1600
(textbox+i).text=i
Next
我找不到关于 this.I 的任何信息 不知道这是 possible.Any 的想法吗?
For i as integer = 0 to 1600
CType(Me.Controls("Textbox" + i.ToString()), TextBox).Text = i.ToString()
Next
希望这会奏效。
首先,让我们枚举所有的文本框:
var textboxes = this.Controls.OfType<TextBox>()
.ToArray();
现在我们有了文本框,让我们遍历它们并设置它们的编号:
for(int i = 0; i < textboxes.Count(); i++)
{
var textbox = textboxes[i];
textbox.Text = i.ToString();
}
如果您想从预定义的值范围开始循环,那么这应该可以解决问题:
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
只是为了添加另一个选项(虽然我不推荐它 - 它很慢!!!!)您可以使用 Reflection
在循环中按名称获取它们。
例如:
For tb As Integer = 1 To 1600
Dim textBox As TextBox = GetTextBoxByReflection("TextBox" & tb.ToString())
textBox.Text = tb.ToString()
Next
另见 Getting variable by name in C#
您还可以循环所有控件...
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
我有 1600 textboxes.I 想要这样的东西 :
Textbox1.Text="1"
Textbox2.Text="2"
Textbox3.Text="3"
Textbox4.Text="4"
...
我知道这行不通,但我需要这样的循环:
For i as integer = 0 to 1600
(textbox+i).text=i
Next
我找不到关于 this.I 的任何信息 不知道这是 possible.Any 的想法吗?
For i as integer = 0 to 1600
CType(Me.Controls("Textbox" + i.ToString()), TextBox).Text = i.ToString()
Next
希望这会奏效。
首先,让我们枚举所有的文本框:
var textboxes = this.Controls.OfType<TextBox>()
.ToArray();
现在我们有了文本框,让我们遍历它们并设置它们的编号:
for(int i = 0; i < textboxes.Count(); i++)
{
var textbox = textboxes[i];
textbox.Text = i.ToString();
}
如果您想从预定义的值范围开始循环,那么这应该可以解决问题:
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
只是为了添加另一个选项(虽然我不推荐它 - 它很慢!!!!)您可以使用 Reflection
在循环中按名称获取它们。
例如:
For tb As Integer = 1 To 1600
Dim textBox As TextBox = GetTextBoxByReflection("TextBox" & tb.ToString())
textBox.Text = tb.ToString()
Next
另见 Getting variable by name in C#
您还可以循环所有控件...
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