我想制作汽车调查问卷。我对下一个问题和非常好的按钮有一些问题。
以下是我的计划的运作方式。我有4个文本文件。第一个问题(我的所有问题在哪里),第二个(第一个答案),第二个(第二个答案),第三个(第三个答案)和最后一个答案正确
int answersNo;
int currentQuestion;
int totalNo;
bool[] Checked = new bool[26];
string contents;
int score;
private void Form1_Load(object sender, EventArgs e)
{
totalNo = 26;
answersNo = 0;
currentQuestion = 1;
score = 0;
for (int i = 0; i < 1; i++)
for (int j = 0; j < 3; j++)
{
answerLabel[i, j] = new Label();
answerLabel[i, j].Left = 50;
answerLabel[i, j].AutoSize = false;
answerLabel[i, j].BorderStyle = BorderStyle.FixedSingle;
answerLabel[i, j].Width = 500;
answerLabel[i, j].Height = 45;
answerLabel[i, j].Top = 200 +j * 50;
answerLabel[i, j].BackColor = Color.White;
this.Controls.Add(answerLabel[i, j]);
}
label1.Text = question.ReadLine();
answerLabel[0, 0].Text = answer1.ReadLine();
answerLabel[0, 1].Text = answer2.ReadLine();
answerLabel[0, 2].Text = answer3.ReadLine();
answerLabel[0, 0].Click += new EventHandler(answer1_Click);
answerLabel[0, 1].Click += new EventHandler(answer2_Click);
answerLabel[0, 2].Click += new EventHandler(answer3_Click);
for (int i = 1; i <= totalNo; i++)
{
Checked[i] = false;
}
}
private void button1_Click(object sender, EventArgs e) // the button which verifies if the answer is good
{
contents = goodAnswer.ReadToEnd();
for (int i = 0; i < 1; i++)
for (int j = 0; j < 3; j++)
{
if ( answerLabel[i, j].BackColor==Color.Yellow && contents.Contains(answerLabel[i, j].Text))
{
score++;
MessageBox.Show(score.ToString());
nextQuestion();
}
}
}
和我的功能
public void nextQuestion()
{
if (answersNo < totalNo-1)
{
do
{
if (currentQuestion < totalNo)
{
Checked[currentQuestion] = false;
currentQuestion++;
}
else
currentQuestion = 1;
}
while (Checked[currentQuestion] == true);
label1.Text = question.ReadLine();
answerLabel[0, 0].Text = answer1.ReadLine();
answerLabel[0, 1].Text = answer2.ReadLine();
answerLabel[0, 2].Text = answer3.ReadLine();
}
else
{
MessageBox.Show("You have done it!");
}
answersNo++;
}
如果按下按钮,我不知道如何验证答案并进入下一个问题。 (我们都知道汽车问卷如何运作)。
答案 0 :(得分:0)
第一件事:在方法button1_click
中放置一个断点,然后按调试模式从Visual Studio启动应用程序,按F5,逐步调试,不要急,查看变量值并思考每一步。
如果调用了方法,则跳过nextQuestion调用有三个可能的原因:
if (answerLabel[i, j].BackColor == Color.Yellow
&& contents.Contains(answerLabel[i, j].Text))
contents
答案出现在contents
中,但可能在一个字符/案例/拼写错误中有所不同,因此请使用
String.Compare(contents,
answerLabel[i, j].Text,
StringComparison.OrdinalIgnoreCase);
<强>问题:强>
goodAnswer
变量,请说明它是如何初始化的for (int i = 0; i < 1; i++)
,它什么都不做,你可以使用int i = 0;
答案 1 :(得分:0)
我有不同的文本文件,包含所有问题,第一个答案,第二个和第三个,以及另一个带有正确答案的文本文件。
这是goodAnswer。
StreamReader goodAnswer = new StreamReader(Application.StartupPath + "\\goodanswer.txt");
在点击检查按钮之前,我希望选择的答案以黄色着色。当没有按下时,答案是白色的。
我想要一个函数(如果它是正确的,只验证彩色答案)