現在のところ私のプログラムは完璧に動作しますが、私の唯一の苦情は5行のコードを持つこれらの巨大switch文です。それは固いと思われ、読むのは難しいです。しかし私はswitch文のために50行のコードをスクロールさせたくありません。C#ボタン、チェックボックス、ラベルで変数のリストを行う簡単な方法はありますか
私のボタン、チェックボックス、またはラベルにラベルを付けると、配列のようなものを現在の番号にすることができれば不思議でした。チェックボックス1のように、チェックボックス2はチェックボックス[1]とチェックボックス[2]になります。これを行うと動作しませんので、私はこれに対する回避策を探しています。できるだけforループを使用したいのですが、同じことを10回書くのは非常に時間がかかり、時間がかかります。
以下は、私のswitch文の様子です。
switch (currentProblem){
case 1: problem1.Text = (num1 + sign + num2).ToString(); break;
case 2: problem2.Text = (num1 + sign + num2).ToString(); problem2.Visible = true; c2.Visible = true; answer2.Visible = true; break;
case 3: problem3.Text = (num1 + sign + num2).ToString(); problem3.Visible = true; c3.Visible = true; answer3.Visible = true; break;
case 4: problem4.Text = (num1 + sign + num2).ToString(); problem4.Visible = true; c4.Visible = true; answer4.Visible = true; break;
case 5: problem5.Text = (num1 + sign + num2).ToString(); problem5.Visible = true; c5.Visible = true; answer5.Visible = true; break;
case 6: problem6.Text = (num1 + sign + num2).ToString(); problem6.Visible = true; c6.Visible = true; answer6.Visible = true; break;
case 7: problem7.Text = (num1 + sign + num2).ToString(); problem7.Visible = true; c7.Visible = true; answer7.Visible = true; break;
case 8: problem8.Text = (num1 + sign + num2).ToString(); problem8.Visible = true; c8.Visible = true; answer8.Visible = true; break;
case 9: problem9.Text = (num1 + sign + num2).ToString(); problem9.Visible = true; c9.Visible = true; answer9.Visible = true; break;
case 10: problem10.Text = (num1 + sign + num2).ToString(); problem10.Visible = true; c10.Visible = true; answer10.Visible = true; break;
}
switch (hiddenCurrentLabel.Text)
{
case "1": if (answer1.Text != "") { if (answer1.Text == hiddenAnswerLabel.Text) { c1.Checked = true; } addOne(); } else { break; } t = int.Parse(hiddenCurrentLabel.Text); chooseRandoms(t); return;
case "2": if (answer2.Text != "") { if (answer2.Text == hiddenAnswerLabel.Text) { c2.Checked = true; } addOne(); } else { break; } t = int.Parse(hiddenCurrentLabel.Text); chooseRandoms(t); return;
case "3": if (answer3.Text != "") { if (answer3.Text == hiddenAnswerLabel.Text) { c3.Checked = true; } addOne(); } else { break; } t = int.Parse(hiddenCurrentLabel.Text); chooseRandoms(t); break;
case "4": if (answer4.Text != "") { if (answer4.Text == hiddenAnswerLabel.Text) { c4.Checked = true; } addOne(); } else { break; } t = int.Parse(hiddenCurrentLabel.Text); chooseRandoms(t); break;
case "5": if (answer5.Text != "") { if (answer5.Text == hiddenAnswerLabel.Text) { c5.Checked = true; } addOne(); } else { break; } t = int.Parse(hiddenCurrentLabel.Text); chooseRandoms(t); break;
case "6": if (answer6.Text != "") { if (answer6.Text == hiddenAnswerLabel.Text) { c6.Checked = true; } addOne(); } else { break; } t = int.Parse(hiddenCurrentLabel.Text); chooseRandoms(t); break;
case "7": if (answer7.Text != "") { if (answer7.Text == hiddenAnswerLabel.Text) { c7.Checked = true; } addOne(); } else { break; } t = int.Parse(hiddenCurrentLabel.Text); chooseRandoms(t); break;
case "8": if (answer8.Text != "") { if (answer8.Text == hiddenAnswerLabel.Text) { c8.Checked = true; } addOne(); } else { break; } t = int.Parse(hiddenCurrentLabel.Text); chooseRandoms(t); break;
case "9": if (answer9.Text != "") { if (answer9.Text == hiddenAnswerLabel.Text) { c9.Checked = true; } addOne(); } else { break; } t = int.Parse(hiddenCurrentLabel.Text); chooseRandoms(t); break;
case "10": if (answer10.Text != "") { if (answer10.Text == hiddenAnswerLabel.Text) { c10.Checked = true; } getAverage(); } else { break; } t = int.Parse(hiddenCurrentLabel.Text); break;
}
第2のものは、forループでそれを持つことで多くの時間を節約することができます。
[関連または重複](http://stackoverflow.com/q/36045587/を993547)。 –
おかげでパトリック、私はそれを試さなければならないでしょう。正確には私が考えていたものではありませんが、もしうまくいくなら、それは機能します。 ;) –
解決策は同じです:配列を繰り返し処理し、何かをしてください。あなたの場合、 'if'ステートメントがそうであるかもしれません。 –