我有8个简单的按钮。 我正在使用hercules将数据发送到我的系统。 我发送地址和领导状态。 当我的LED状态为01时,我希望button1变为绿色。 当我的LED状态为02时,我希望按钮2变为绿色,依此类推。 我被困了,想要建议。以下是我目前的代码
var address_Offset = Convert.ToByte(data.Substring(0, 2), 16);
var led_stat = Convert.ToByte(data.Substring(2, 2), 16);
var address = address_Offset - 0x3F;
for (int i = 0; i < 8; i++)
{
foreach (var btn in Button)
{
if (Convert.ToInt32(btn.Tag) == address * 8 + i)
{
if ((led_stat & 1) == 1)
{
btn.Appearance.BackColor = Color.Green;
}
else
{
btn.Appearance.BackColor = Color.Red;
}
}
}
led_stat >>= 2;
}
return;
答案 0 :(得分:0)
我看不出这个循环foreach (var btn in Button)
如何浏览表单或容器中的所有按钮?试试这个:
for (int i = 0; i < 8; i++)
{
foreach (Control c in Form1.Controls)
{
if (c is Button)
{
Button btn = (c as CheckBox);
if (Convert.ToInt32(btn.Tag) == address * 8 + i)
{
if ((led_stat & 1) == 1)
{
btn.Appearance.BackColor = Color.Green;
}
else
{
btn.Appearance.BackColor = Color.Red;
}
}
}
}
led_stat >>= 2;
}
return;