2016-07-19 7 views
0

私は、for文が実行されるときに徐々にチェックしたい16個のチェックボックスからなる2つの配列を持っています。それは次のようになります。複数のチェックボックス配列を制御する

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; 
     } 
} 

私は声明のための「cboxes」の下に赤い線を取得しています「名 『cboxes』は現在のコンテキストに存在しません。」 一度に1つしか使用しない場合、完全に動作するので、配列に問題はないはずです。次のように一度に一つの作業は次のとおりです。

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

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

私は他の場所でそれを使用していると意図した通りに動作しますので、また私のブール「ホスト」に問題がないはずです。私はちょうど16の配列がチェックされるかを切り替えることを試みています。前もって感謝します。

答えて

2

は、あなただけのif文の外で変数を宣言する必要があります:

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; 
    } 
} 

またはD・スタンレーの答えにちょうど

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

わずかなバリエーション、あなたは配列を使用する必要がある場合ではないことを確認し、 forループを使用すると、チェックボックスの数をハードコードする必要がありますが、このシャドウも同様に機能します。

public void Cycle() 
    { 
     var cboxes = host ? relayRow2.CheckBoxes : relayRow.CheckBoxes; 
     cboxes = (from checkBox in cboxes.ToList() 
      select new CheckBox { Checked = true}).ToArray(); 
    } 
P.

P.S.私はそうでなければ、私はあなたの答えD Stanleyと興奮した(申し訳ありません!)

コメントして十分な評判ポイントがない
関連する問題