我正在编写一个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个问题。 谢谢!
答案 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>
类型,因为那样你就是在创建一个新的局部变量。