要转换按钮颜色的数据

时间:2016-05-12 07:07:40

标签: c# loops

我有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;

1 个答案:

答案 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;