1

問題のテストを表示する C# プログラムを作成しています。テストは10問。しかし、次の助けを借りて新しいクイズを選択した場合、プログラムは同じアルゴリズムに従いたくありません。

   private void newToolStripMenuItem_Click (object sender, EventArgs e) 

クイズは 10 問出題されても止まりません。クイズは続き、出題を繰り返し、一定数の出題でブロックされます。

コードをステップ実行すると、次のことがわかりました。

  • 初めてクイズを解いたとき:questions.Count=10;
  • 2回目に解決すると:questions.Count=20;
  • 3回目に解決したとき: questions.Count=30;

questions.Count=10クイズの答え方を教えてください。

これが私のコードです:

public partial class Form3 : Form
{
    int nr;
    Collection<question> questions = new Collection<question>();

    public class question
    {
        public bool displayed = false;
        public string text;
    }


    //when I press a button from MenuStrip my quiz begin
    private void newToolStripMenuItem_Click(object sender, EventArgs e)
    {
        nr = 1;
        button1.Enabled = true;//it's the next_question button

        StreamReader sr = new StreamReader("quiz.txt");
        while (!sr.EndOfStream)
        {   
            question i = new question();
            questions.Add(i);
        }
        sr.Close();
        int x = r.Next(questions.Count);
        textBox1.Text = questionText;
        questions[x].displayed = true;
        current_question=x;
      }
}

作成しようとしたことを追加します

       Collection<question> questions = new Collection<question>()

私が解決するすべてのクイズに対して、これを最初に置きます

       private void newToolStripMenuItem_Click(object sender, EventArgs e) 

または、現在のクイズの最後に:

       if (nr >= questions.Count){ //here } 

これらの変更のいずれも、コレクションが 10 問で増えることを妨げません。ありがとうございました!

4

2 に答える 2

2

Clear メソッド呼び出しを追加します。

questions.Clear();

そのようです:

private void newToolStripMenuItem_Click(object sender, EventArgs e)
{   nr = 1;
    button1.Enabled = true;//it's the next_question button
    questions.Clear();

    StreamReader sr = new StreamReader("quiz.txt");
    while (!sr.EndOfStream)
    {   
        question i = new question();
        questions.Add(i);
    }
    sr.Close();
    int x = r.Next(questions.Count);
    textBox1.Text = questionText;
    questions[x].displayed = true;
    current_question=x;

  }
于 2012-04-19T07:38:29.897 に答える
1

置く

questions = new Collection<question>();

newToolStripMenuItem_Clickメソッドまたは使用の開始時question.Clear();

Collection<question>新しいローカル変数を作成しているため、その前にタイプを含めないでください。

于 2012-04-19T07:37:46.883 に答える