2016-11-22 5 views
0

私はすべてのチェックボックスをランダムに入力するランダムなボタンを備えたドラムマシンを持っています。私は2つのドラムが同時に演奏されないようにします。合計で5つのドラムがある16の拍子があります。だから私はリストの現在の値を調べるforループを使用して、プラスまたはマイナス16の値に対してfalseにチェックボックスブール値を設定することを考えています。チェックボックスの選択を省略します

たとえば:チェックボックス1が選択されている場合、チェックボックス17,33 、49、および65は空白にする必要があります。同様に、チェックボックス56が選択されている場合、8,24,40および72はチェックされていないはずである。すべてのチェックボックスに同じものが必要です。私はこれを行う方法がわかりません。

ここ This is my form it will help display my intent

はランダムにチェックボックスを埋めるためのコードです:探しのための

private void randombuttonClick(object sender, EventArgs e) 
     { 
      List<CheckBox> Checkboxlist = new List<CheckBox>(); 
      foreach (CheckBox control in this.Controls.OfType<CheckBox>()) 
      { 
       Checkboxlist.Add(control); 
       control.Checked = false; 
      } 

      for (int i = 0; i <= 50; i++) 
      { 
       var r = random.Next(0, Checkboxlist.Count); 
       var checkbox = Checkboxlist[r]; 
       Checkboxlist[r].Checked = true; 
      } 
     } 

ありがとう!

+0

私は少し具体的でなければならないと思いますが、それは少し不明です*なぜこの*そして*なぜ... *あなたはこのプロジェクトに取り組んでいて、紙の上に、 't。 – Jim

+0

チェックボックス1をチェックすると、17,33,49,56のチェックを外したいとします.18,19,20、34,35などの間ではどうでしょうか? – Aruna

+0

おそらくラジオボタンを使用しているはずです... –

答えて

0

まず、チェックボックスのリストを何かで注文したいと思うかもしれません。あなたのTabIndexプロパティが正しく設定されている場合は、行うことができます:

foreach (CheckBox control in this.Controls.OfType<CheckBox>().OrderBy(x => x.TabIndex)) 
{ 
    //... 
} 

第二に、最も簡単な解決策は、再生するために、ランダムなドラムを選ぶ、列を反復処理することが考えられます。

List<CheckBox> checkboxList = this.Controls.OfType<CheckBox>() 
    .OrderBy(x => x.TabIndex) 
    .ToList(); //it's simpler than a foreach loop 
for (int i = 0; i < 16; i++) 
{ 
    var instrumentIndex = random.Next(0, 4); //make it (0, 5) if you want to allow an entirely empty column 
    for (int j = 0; j < 4; j++) 
    { 
     checkboxList[j*16 + i] = (j == instrumentIndex); 
    } 
} 

コードは、現在の列番号を格納するi変数を使用して列をループ。各列について、4つのうちランダムな行を選択します(コメントには、「現在のビートにはインストゥルメントを使用しない」オプションが必要な場合は、ランダムな範囲を4つに拡張します)。

そして、その列の各チェックボックスのために(最初の行とi番目の列にあるi番目のチェックボックスで始まる、16のチェックボックス正確に1行下に移動するたびに、移動する)、それはtrueを割り当て行番号がランダムに選択されたものと一致する場合はfalseとなります。

+1

ありがとうございました!巨大な助け。あなたの深い説明にも感謝します! – murderface

関連する問題