Q汽车调查问卷中的下一个问题和检查按钮

时间:2013-11-29 20:53:22

标签: c# winforms

我想制作汽车调查问卷。我对下一个问题和非常好的按钮有一些问题。

以下是我的计划的运作方式。我有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++;
    }

如果按下按钮,我不知道如何验证答案并进入下一个问题。 (我们都知道汽车问卷如何运作)。

2 个答案:

答案 0 :(得分:0)

第一件事:在方法button1_click中放置一个断点,然后按调试模式从Visual Studio启动应用程序,按F5,逐步调试,不要急,查看变量值并思考每一步。

如果调用了方法,则跳过nextQuestion调用有三个可能的原因:

if (answerLabel[i, j].BackColor == Color.Yellow 
     && contents.Contains(answerLabel[i, j].Text))
  1. 正确答案条目的颜色不是黄色
  2. contents
  3. 中没有答案
  4. 答案出现在contents中,但可能在一个字符/案例/拼写错误中有所不同,因此请使用

    String.Compare(contents, 
                   answerLabel[i, j].Text,
                   StringComparison.OrdinalIgnoreCase);
    
  5. <强>问题:

    1. 什么是goodAnswer变量,请说明它是如何初始化的
    2. 为什么你需要for (int i = 0; i < 1; i++),它什么都不做,你可以使用int i = 0;

答案 1 :(得分:0)

我有不同的文本文件,包含所有问题,第一个答案,第二个和第三个,以及另一个带有正确答案的文本文件。

这是goodAnswer。

StreamReader goodAnswer = new StreamReader(Application.StartupPath + "\\goodanswer.txt");

在点击检查按钮之前,我希望选择的答案以黄色着色。当没有按下时,答案是白色的。

我想要一个函数(如果它是正确的,只验证彩色答案)