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";
}