2016-05-12 78 views
1

我有8個簡單按鈕。 我正在使用hercules將數據發送到我的系統。 我正在發送地址和led狀態。 當我的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

我看不出怎麼能這樣循環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; 
+0

按鈕是一個簡單按鈕的列表。所以,Button包含8個簡單按鈕。 – active92