C#从连接的文本中调用对象

本文关键字:调用 对象 文本 连接 | 更新日期: 2023-09-27 18:25:58

我试图从for循环中调用多个具有多个名称的标签,但问题是我不想使用"foreach"来循环所有控件。

我想直接引用它,例如:

for(ai = 2; ai < 11 ; ai ++)
{
    this.Controls("label" + ai).Text = "SomeRandomText";
}

我该怎么做?

我已经试着在网上找到这个问题,但我找到的都是带有"foreach"循环的答案。谢谢

C#从连接的文本中调用对象

假设您的标签通过"label10"命名为"lable2",那么您可以这样做:

for(int ai = 2; ai < 11 ; ai++)
{
    this.Controls["label" + ai].Text = "SomeRandomText";
}

这里有一个不依赖于控件名称的解决方案,因此您可以随时更改标签的名称,而不会破坏代码。

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

然后,您所需要做的就是为每个想要更新的控件的Tag属性分配一个介于2和11之间的值。您可以通过代码设置此属性,也可以在设计器中设置该属性。

您也可以根据自己的意愿随意更改Tag属性的值。只需确保索引在代码行中与您选择的标记值一致即可!