C# 从连接的文本中调用一个对象
C# Call an object from concatenated text
我试图从 for 循环调用具有多个名称的多个标签,但问题是我不想使用 "foreach" 循环遍历所有控件。
我想直接引用它,例如:
for(ai = 2; ai < 11 ; ai ++)
{
this.Controls("label" + ai).Text = "SomeRandomText";
}
我该怎么做?
我已经尝试在网上找到这个问题,但我找到的都是 "foreach" 循环的答案。
谢谢!!
这是一个不依赖于控件名称的解决方案,因此您可以随时更改标签的名称而不会破坏您的代码。
foreach (var control in this.Controls)
{
if (control is Label)
{
int index;
if (control.Tag != null && int.TryParse(control.Tag.ToString(), out index) && index >= 2 && index < 11)
{
((Label)control).Text = "SomeRandomText";
}
}
}
然后,您需要做的就是为每个要更新的控件的标签 属性 分配一个介于 2 和 11 之间的值。您可以通过代码设置此属性或在设计器中设置属性。
您还可以根据需要随意更改标记 属性 的值。只需确保代码中的索引检查与您选择的标签值一致!
假设你的标签被命名为 "lable2" 到 "label10",那么你可以这样做:
for(int ai = 2; ai < 11 ; ai++)
{
this.Controls["label" + ai].Text = "SomeRandomText";
}
我试图从 for 循环调用具有多个名称的多个标签,但问题是我不想使用 "foreach" 循环遍历所有控件。
我想直接引用它,例如:
for(ai = 2; ai < 11 ; ai ++)
{
this.Controls("label" + ai).Text = "SomeRandomText";
}
我该怎么做?
我已经尝试在网上找到这个问题,但我找到的都是 "foreach" 循环的答案。 谢谢!!
这是一个不依赖于控件名称的解决方案,因此您可以随时更改标签的名称而不会破坏您的代码。
foreach (var control in this.Controls)
{
if (control is Label)
{
int index;
if (control.Tag != null && int.TryParse(control.Tag.ToString(), out index) && index >= 2 && index < 11)
{
((Label)control).Text = "SomeRandomText";
}
}
}
然后,您需要做的就是为每个要更新的控件的标签 属性 分配一个介于 2 和 11 之间的值。您可以通过代码设置此属性或在设计器中设置属性。
您还可以根据需要随意更改标记 属性 的值。只需确保代码中的索引检查与您选择的标签值一致!
假设你的标签被命名为 "lable2" 到 "label10",那么你可以这样做:
for(int ai = 2; ai < 11 ; ai++)
{
this.Controls["label" + ai].Text = "SomeRandomText";
}