更改十个标签'颜色同时。必须有一种更简单的方法,然后逐个输入它们

时间:2016-04-26 14:25:18

标签: c# winforms colors

这就是我要做的,改变所有标签'颜色同时取决于我在表单中选择的颜色。有没有办法以比我尝试过的方式更容易的方式做到这一点?

private void SetColor()
    {
        if (checkBoxBlue.Checked == true)
        {
            labelOrigo.ForeColor = System.Drawing.Color.Blue;
            labelN.ForeColor = System.Drawing.Color.Blue;
            labelNW.ForeColor = System.Drawing.Color.Blue;
            labelW.ForeColor = System.Drawing.Color.Blue;
            labelSW.ForeColor = System.Drawing.Color.Blue;
            labelS.ForeColor = System.Drawing.Color.Blue;
            labelSE.ForeColor = System.Drawing.Color.Blue;
            labelE.ForeColor = System.Drawing.Color.Blue;
            labelNE.ForeColor = System.Drawing.Color.Blue;
        }

        else if (checkBoxBlack.Checked == true)
        {
            labelOrigo.ForeColor = System.Drawing.Color.Black;
            labelN.ForeColor = System.Drawing.Color.Black;
            labelNW.ForeColor = System.Drawing.Color.Black;
            labelW.ForeColor = System.Drawing.Color.Black;
            labelSW.ForeColor = System.Drawing.Color.Black;
            labelS.ForeColor = System.Drawing.Color.Black;
            labelSE.ForeColor = System.Drawing.Color.Black;
            labelE.ForeColor = System.Drawing.Color.Black;
            labelNE.ForeColor = System.Drawing.Color.Black;
        }

        else if (checkBoxRed.Checked == true)
        {
            labelOrigo.ForeColor = System.Drawing.Color.Red;
            labelN.ForeColor = System.Drawing.Color.Red;
            labelNW.ForeColor = System.Drawing.Color.Red;
            labelW.ForeColor = System.Drawing.Color.Red;
            labelSW.ForeColor = System.Drawing.Color.Red;
            labelS.ForeColor = System.Drawing.Color.Red;
            labelSE.ForeColor = System.Drawing.Color.Red;
            labelE.ForeColor = System.Drawing.Color.Red;
            labelNE.ForeColor = System.Drawing.Color.Red;
        }
    }

2 个答案:

答案 0 :(得分:1)

以下是建议:

  1. 将代码行 gamedb : Object _id: 1 gamedb._id: "225b3c25aeb38a0", } . . 添加到代码顶部。
  2. 声明using System.Drawing;等等。命名较短的常量并使用它 变量而不是。
  3. 使用数组和循环来减少编写的代码,如下所示。
  4. System.Drawing.Color.Blue

答案 1 :(得分:1)

有。使用for或foreach循环。我倾向于选择foreach循环,但我相信可能更快:

foreach(Control ctl in this.Controls)
{
    if(ctl.GetType().Name=="Label")
    {
        ctl.ForeColor = Color.Blue;
    }
}