C# 在C中为我的所有标签创建Foreach循环#

C# 在C中为我的所有标签创建Foreach循环#,c#,foreach,label,background-color,C#,Foreach,Label,Background Color,我正在尝试将所有标签的背景色设置为黑色,但如果设置为黑色,则会显示如下: lable0.BackColor = Color.Black; lable1.BackColor = Color.Black; 还有108次。所以我想知道是否有一种方法可以使用foreach循环,如: int[] labels = new int[] {1, 2, 3...110}; foreach (int i in labels) { label.BackColor = Color.Black; } 如

我正在尝试将所有标签的背景色设置为黑色,但如果设置为黑色,则会显示如下:

lable0.BackColor = Color.Black;
lable1.BackColor = Color.Black;
还有108次。所以我想知道是否有一种方法可以使用foreach循环,如:

int[] labels = new int[] {1, 2, 3...110};
foreach (int i in labels)
{
      label.BackColor = Color.Black;
}

如果您的标签是表单的直接子级(我假设这是winforms),这应该适用于您:

foreach(在this.Controls.OfType()中标记lbl)
{ 
lbl.BackColor=颜色。黑色;
}

如果您的标签是表单的直接子级(我假设这是winforms),那么这应该适用于您:

foreach(在this.Controls.OfType()中标记lbl)
{ 
lbl.BackColor=颜色。黑色;
}

Winforms控件是分层的,因此需要递归遍历它们以查找所有标签:

    public static IEnumerable<Control> WalkControls(this Control topControl)
    {
        if (topControl == null)
            yield break;
        yield return topControl;
        foreach (var child in topControl.Controls.OfType<Control>())
            foreach (var subChild in WalkControls(child))
                yield return subChild;
    }

    public static void SetControlTreeBackColor<TControl>(Control topControl, Color color) where TControl : Control
    {
        foreach (var childControl in topControl.WalkControls().OfType<TControl>())
            childControl.BackColor = color;
    }
公共静态IEnumerable WalkControl(此控件为topControl)
{
如果(topControl==null)
屈服断裂;
收益率控制;
foreach(topControl.Controls.OfType()中的var子级)
foreach(WalkControls中的var子级(子级))
收益子代;
}
公共静态void SetControlTreeBackColor(控件topControl,颜色颜色),其中TControl:Control
{
foreach(topControl.WalkControls()中的var childControl()类型()
childControl.BackColor=颜色;
}

在这里,您可以使用“标签”来表示“TControl”。

Winforms控件是分层的,因此您需要递归地遍历它们以查找所有标签:

    public static IEnumerable<Control> WalkControls(this Control topControl)
    {
        if (topControl == null)
            yield break;
        yield return topControl;
        foreach (var child in topControl.Controls.OfType<Control>())
            foreach (var subChild in WalkControls(child))
                yield return subChild;
    }

    public static void SetControlTreeBackColor<TControl>(Control topControl, Color color) where TControl : Control
    {
        foreach (var childControl in topControl.WalkControls().OfType<TControl>())
            childControl.BackColor = color;
    }
公共静态IEnumerable WalkControl(此控件为topControl)
{
如果(topControl==null)
屈服断裂;
收益率控制;
foreach(topControl.Controls.OfType()中的var子级)
foreach(WalkControls中的var子级(子级))
收益子代;
}
公共静态void SetControlTreeBackColor(控件topControl,颜色颜色),其中TControl:Control
{
foreach(topControl.WalkControls()中的var childControl()类型()
childControl.BackColor=颜色;
}


在这里,您可以使用“Label”来表示“TControl”。

您可以简单地创建一个标签数组,然后使用foreach循环遍历这些标签吗?表单的背景色是什么?控件是我的表单背景色您可以使用字符串连接来获得它们,如下所示:
this.Controls[“Label”+i]
。当然,您必须将其转换为
标签。可能重复:@hus274如果没有110条Add语句,他会怎么做?你能简单地创建一个标签数组,然后使用foreach循环遍历这些标签吗?你的表单的背景色是什么?控件是我的表单背景色你可以使用字符串连接来获得它们,如下所示:
this.Controls[“标签”+i]
。当然,您必须将其转换为
标签。可能的重复:@hus274如果没有110条Add语句,他会怎么做?
+1
,这当然假设您希望更改表单上的每个标签,而不仅仅是一组特定的标签。可以轻松修改,以便仅将
BackColor
应用于特定的fic
Label
s,如果需要的话。@MikeChristensen哇,有更多的(超过108个)吗 ? :p@Jblayone它不起作用,什么都不告诉我们。您是否使用System.Linq;
指令添加了
+1
,这当然假设您想要更改表单上的每个标签,而不仅仅是一组特定的标签。如果需要,可以轻松修改,以便仅将
背景色应用于特定的
标签
。@MikeChristensen哇,是否有更多(超过108个)?:p@Jblayone它不起作用了,什么都不告诉我们。您是否使用System.Linq;
指令添加了