使用 C# 在运行时启用一系列连续命名的 Label 控件

Enable at runtime a series of serially named Label controls using c#

我有一些标签控件,名称如下: Label1、Label2、Label3.......Label14,在设计时禁用。 现在我想以下列方式使用 for 循环启用它们

for(int i=1;i<15;i++)
{
    (Label+i).Enabled = true;
}

显然上面的代码无法编译。

Label1.Enabled = true;
Label2.Enabled = true;
Label3.Enabled = true;
...........
Label14.Enabled = true;

除了刚才提到的方法之外,还有其他方法可以达到预期的效果吗above.Hope我提前给自己clear.Please建议code.Thanks

您可以将标签放入列表中并遍历该列表:

List<Label> myLabels = new List<Label> { Label1, Label2, /*...*/ Label14};
foreach(Label lbl in myLabels) lbl.Enabled = true;

如果这些是您 Form 中唯一的标签,您也可以这样做:

foreach(Label lbl in this.Controls.OfType<Label>())
    lbl.Enabled = true;

这会遍历 Form 中的所有(顶级)控件,并采用所有类型 LabelEnabled 设置为 true

您可以将它们粘贴到 Enumerable 中,然后使用 foreach 遍历它们。

List<Label> lblList = new List<Label> { Label1, Label2, Label3, Label4 };

foreach (Label label in lblList)
{
    label.Enabled = true;
}

要获得更简洁的解决方案,您可以使用以下语法。

lblList.ForEach(x => x.Enabled = true);

您可以从 parent 的 Controls 集合中按名称获取控件

for(int i = 1; i < 15; i++)
{
    Control label = this.Controls["Label"+i];
    if (label != null) 
        label.Enabled = true;
}

在此示例中,this 指的是表单。如果标签属于另一个 parent 控件(例如 Panel 或 GroupBox),则应使用它而不是 this