想象一下,我们有5个字符串变量,我们希望在运行时为它们分配“Foo”。
而不是这个
string a1 = "Foo";
string a2 = "Foo";
string a3 = "Foo";
string a4 = "Foo";
string a5 = "Foo";
我们不能使用这样的东西:
for(int i = 0;i < 5;i++)
{
a+i = "Foo";
}
是否无法以类似的方式访问它们?
答案 0 :(得分:4)
Label[] labels = new Label[] { label1, label2, label3, label4, label5 };
for (int i = 0; i < labels.Length; i++)
{
labels[i].Text = "Foo";
}
答案 1 :(得分:4)
正如其他人所说,数组(或其他集合)是一种更好的方法。
将数组视为仅通过索引始终访问的变量集合。
我想不出你为什么想要有一组变量,如你的问题所示。如果你绝对有这样做,并且它们是实例/静态变量,你可以使用反射来访问它们,如果你真的想要 - 但是使用数组或其他集合会更好,更好
答案 2 :(得分:2)
您可以按名称访问控件,但是向页面添加标签项数组然后使用整数访问数组会更加清晰。
答案 3 :(得分:2)
您可以通过迭代标签的父控件:
for (int i=0; i<= parent.controls.count(); i++)
{
if (parent.controls("label" + i) != null)
{
...
}
}
HTH
修改强>
编辑之后,我能看到的唯一方法就是将它们添加到列表/数组/字典中并迭代它,尽管原理是相同的。
答案 4 :(得分:1)
您可以创建标签的数组或数组列表,并将标签放入其中。然后你可以做类似的事情。
答案 5 :(得分:1)
如果所有标签都具有相同的父标签,并且该父标签中没有其他标签控件,则可以执行以下操作:
foreach (Control lbl in ParentControl)
{
if (lbl is TextBox)
{
((Label)lbl).Text = "Foo";
}
}
答案 6 :(得分:1)
假设我们在这里谈论webforms,你可以使用FindControl()方法。
private void Button1_Click(object sender, EventArgs MyEventArgs)
{
// Find control on page.
TextBox myControl1 = (TextBox) FindControl("Label1");
if(myControl1!=null)
{
string message = myControl1.Text;
}
}