每次我解决测验时,问题集合会增加10个问题

时间:2012-04-19 07:34:57

标签: c# collections

我正在编写一个C#程序来显示问题测试。 测试有10个问题。 但是如果我在

的帮助下选择一个新的测验,程序不想遵循相同的算法
   private void newToolStripMenuItem_Click (object sender, EventArgs e) 

测验不会在10个问题之后停止。它继续,它重复问题,并在一定数量的问题上阻止。

我逐步完成了代码,我看到了:

  • 当我第一次解决测验时:questions.Count=10;
  • 当我第二次解决它时:questions.Count=20;
  • 当我第三次解决它时: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个问题。 谢谢!

2 个答案:

答案 0 :(得分: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;

  }

答案 1 :(得分:1)

questions = new Collection<question>();

newToolStripMenuItem_Click方法的开头或使用question.Clear();

不要在其前面加上Collection<question>类型,因为那样你就是在创建一个新的局部变量。