我有这个循环和多个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;*
}
}
答案 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;
}
}
谢谢大家