2016-05-12 5 views
1

Ich habe 8 simplebuttons. Ich benutze Hercules, um Daten in mein System zu senden. Ich sende Adresse und LED-Status. Wenn mein LED-Status 01 ist, möchte ich, dass Button1 grün wird. Wenn mein LED-Status 02 ist, möchte ich, dass die Taste 2 grün wird und so weiter. Ich stecke fest und möchte beraten. Im Folgenden ist mein Code so weitDaten, um die Farbe der Schaltfläche zu konvertieren

 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; 

Antwort

0

Ich kann nicht sehen, wie kann diese Schleife foreach (var btn in Button) Durchsuchen alle Tasten in Ihrem Formular oder Container? versuchen Sie dies:

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

Schaltfläche ist eine Liste von simplebutton. Also, Button enthält 8 einfache Tasten. – active92

Verwandte Themen