2016-07-19 6 views
0

Ich habe zwei Arrays von 16 Kontrollkästchen, die ich schrittweise überprüft haben soll, wenn eine for-Anweisung ausgeführt wird. Es sieht wie folgt aus: „Der Name‚cboxes‘nicht im aktuellen Kontext nicht vorhanden“Control Mehrere Checkbox-Arrays

public void Cycle() 
{ 
    if (host == false) 
     { 
      CheckBox[] cboxes = relayRow.CheckBoxes; 
     }     
     else if (host == true) 
     { 
      CheckBox[] cboxes = relayRow2.CheckBoxes; 
     } 
    for (int i = 0; i < 16; i++) 
     {    
      cboxes[i].Checked = true; 
     } 
} 

Ich bin eine rote Linie unter dem ‚cboxes‘ in der for-Anweisung immer sagen Wenn ich nur einen nach dem anderen benutze, funktioniert es perfekt. Es sollte also kein Problem mit meinen Arrays geben. einer nach dem anderen zu arbeiten, ist wie folgt:

public void Cycle() 
    {    
     CheckBox[] cboxes = relayRow.CheckBoxes; 

     for (int i = 0; i < 16; i++) 
     { 
      cboxes[i].Checked = true; 
     } 
    } 

Es sollte auch nicht Problem mit meinem boolean ‚host‘, da ich es in anderen Orten eingesetzt haben und es funktioniert wie vorgesehen. Ich versuche nur zu wechseln, welches Array von 16 geprüft wird. Danke im Voraus.

Antwort

2

Sie müssen nur die Variable außerhalb der if Aussage erklären:

public void Cycle() 
{ 
    CheckBox[] cboxes = null; 
    if (host == false) 
    { 
     cboxes = relayRow.CheckBoxes; 
    }     
    else if (host == true) 
    { 
     cboxes = relayRow2.CheckBoxes; 
    } 
    for (int i = 0; i < 16; i++) 
    {    
     cboxes[i].Checked = true; 
    } 
} 

oder nur

public void Cycle() 
{ 
    CheckBox[] cboxes = host ? relayRow2.CheckBoxes : relayRow.CheckBoxes; 
    for (int i = 0; i < 16; i++) 
    {    
     cboxes[i].Checked = true; 
    } 
} 
0

leichte Variation zu D Stanley Antwort, nicht sicher, ob Sie Arrays verwenden müssen und ein for-Schleife, die Sie zwingt, die Anzahl der Checkboxen hart zu codieren, aber das sollte auch funktionieren:

P.S. Ich habe nicht genug Reputationspunkte, um zu kommentieren, ansonsten hätte ich deine Antwort einfach kommentiert D Stanley und upticked (sorry!)