复选框名称带有For计数器

时间:2014-02-13 10:29:07

标签: c# wpf

我有这个循环和多个LED。 LED的名称是Led0,Led1,Led2等 现在我想用这个循环改变每个Led的背景,所以我使用计数器iTeller。 我使用WPF,只在主窗口工作。

for (int iTeller = 0; iTeller < bits.Count(); iTeller++)
{
    if (bits[iTeller] == 1)
    {
        //this doesn't work
        *Led+iTeller+.Background = Brushes.Green;*
    }

}

4 个答案:

答案 0 :(得分:2)

尝试这样(WPF)

for (int iTeller = 0; iTeller < bits.Count(); iTeller++)
    {
        if (bits[iTeller] == 1)
        {

               object i = this.FindName("Led" & iTeller);
               if (i is CheckBox) 
              { 
                CheckBox k = (CheckBox)i;
                MessageBox.Show(k.Name);
              }

           }

    }

答案 1 :(得分:1)

这不会有很多原因。首先,你的LED是某种类型的控件,你需要在变量中,你不能简单地这样称呼它们。 你使用WPF还是Winforms? 您需要一个LED列表,然后您可以遍历列表并将值分配给每个led

答案 2 :(得分:0)

您无法解析这样的变量名,您可以使用Find方法(至少在Windows窗体中)查找命名控件。

您还可以将控件存储在数组中,这样可以防止使用相对较慢的查找调用和其他错误检查:

var leds = new CheckBox[] { Led0, Led1, Led2, Led3, Led4, Led5, Led6, Led7 };

for (int iTeller = 0; iTeller < bits.Count(); iTeller++)
{
    if (bits[iTeller] == 1)
    {
        leds[iTeller].Background = Brushes.Green;
    }

 }

答案 3 :(得分:0)

这有效

for (int iTeller = 0; iTeller < bits.Count(); iTeller++)
            {
                if (bits[iTeller] == 1)
                {
                    var myCheckbox = (CheckBox)this.FindName("Led" + iTeller);
                    myCheckbox.Background = Brushes.Green;
                }

            }

谢谢大家