Derzeit läuft mein Programm einwandfrei, meine einzige Beschwerde ist es hat diese riesigen Switch-Anweisungen mit 5 Zeilen Code, in einer Zeile. Es sieht klebrig aus und es ist schwer zu lesen. Aber ich möchte nicht 50 Zeilen Code für meine switch-Anweisung durchblättern.Gibt es eine einfachere Möglichkeit, eine Liste von Variablen in C# Buttons, Checkboxen, Labels
Ich frage mich, ob ich meine Knöpfe, Kontrollkästchen oder Etiketten beschriftete, wenn ich etwas wie ein Array machen könnte, um die aktuelle Nummer zu sein; wie checkbox1 wäre checkbox2 das Kontrollkästchen [1] und das Kontrollkästchen [2]. Das funktioniert jetzt nicht, also suche ich nach einem Workaround dafür. Ich würde wirklich gerne eine For-Schleife benutzen, wenn es möglich wäre, weil das gleiche Ding 10 mal zu schreiben sehr mühsam und viel zeitaufwendiger ist als ich es gerne hätte.
Unten ist wie meine switch-Anweisung aussieht.
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;
}
Die zweite ist, wo es in einer for-Schleife hätte viel Zeit gespeichert haben.
[Verwandte oder duplizieren] (http://stackoverflow.com/q/36045587/ 993547). –
Danke Patrick, ich muss das versuchen. nicht genau, woran ich dachte, aber wenn es funktioniert, funktioniert es. ;) –
Die Lösung ist die gleiche: iterieren Sie über ein Array und machen Sie damit etwas. Eine "if" -Anweisung könnte in Ihrem Fall tun. –