Код викторины C # не работает должным образом - PullRequest
1 голос
/ 15 июля 2011

Я делаю тест, который работал до определенного момента, но после попытки увеличить его сложность, он не работает полностью, как и должно. Все, что происходит в данный момент, - это то, что возможные ответы в моей таблице базы данных Access привязаны к каждой радиокнопке в моей форме C #.

Эта часть в порядке, однако после нажатия на мою кнопку мне больше не сообщают, был ли выбранный мной ответ правильным или нет. В данный момент я использую ярлык, чтобы сообщить пользователю правильный ответ.

Вот мой код:

namespace WindowsFormsApplication1
{
    public partial class quizQuestions : Form
    {
        public quizQuestions()
        {
            InitializeComponent();
        }
        //int questionNumber;
        //String correctAnswer;
        private void WindowsAnalysisQuiz_Load(object sender, EventArgs e)
        {
            //declare connection string using windows security
            string cnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Hannah\\Desktop\\quizQuestions.accdb";

            //declare Connection, command and other related objects
            OleDbConnection conGet = new OleDbConnection(cnString);
            OleDbCommand cmdGet = new OleDbCommand();

            //try
            //{
            //open connection
            conGet.Open();
            String correctAnswer;

            cmdGet.CommandType = CommandType.Text;
            cmdGet.Connection = conGet;

            cmdGet.CommandText = "SELECT * FROM quizQuestions ORDER BY rnd()"; // select all columns in all rows

            OleDbDataReader reader = cmdGet.ExecuteReader();
            reader.Read();
            label1.Text = reader["Question"].ToString();
            radioButton1.Text = reader["Answer 1"].ToString(); 
            radioButton2.Text = reader["Answer 2"].ToString();
            radioButton3.Text = reader["Answer 3"].ToString();
            radioButton4.Text = reader["Answer 4"].ToString();
            correctAnswer = reader["Correct Answer"].ToString();
            //questionNumber = 1;

            conGet.Close();

        }

        private void btnNextQuestion_Click(object sender, EventArgs e)
        {

            String cnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Hannah\\Desktop\\quizQuestions.accdb";

            //declare Connection, command and other related objects
            OleDbConnection conGet = new OleDbConnection(cnString);
            OleDbCommand cmdGet = new OleDbCommand();

            //try
            {
                //open connection
                conGet.Open();

                cmdGet.CommandType = CommandType.Text;
                cmdGet.Connection = conGet;

                //cmdGet.CommandText = "SELECT * FROM quizQuestions ORDER BY rnd()"; // select all columns in all rows

                OleDbDataReader reader = cmdGet.ExecuteReader();
                reader.Read();

                String chosenAnswer = "";
                int chosenCorrectly = 0;
                if (radioButton1.Checked)
                {
                    chosenAnswer = reader["Answer 1"].ToString();
                }
                else if (radioButton2.Checked)
                {
                    chosenAnswer = reader["Answer 2"].ToString();
                }
                else if (radioButton3.Checked)
                {
                    chosenAnswer = reader["Answer 3"].ToString();
                }
                else
                {
                    chosenAnswer = reader["Answer 4"].ToString();
                }

                if (chosenAnswer == reader["Correct Answer"].ToString())
                {
                    //chosenCorrectly++;
                    label2.Text = "You have got this answer correct";
                    //label2.Text = "You have got " + chosenCorrectly + " answers correct";
                }
                else
                {
                    MessageBox.Show("That is not the correct answer");
                }
            }

        }
    }
}

Таким образом, чтобы подвести итог, возможные ответы загружаются в форму ОК, но когда я нажимаю кнопку в форме, чтобы определить, был ли выбран правильный ответ, ничего не происходит.

Ответы [ 3 ]

0 голосов
/ 15 июля 2011

Если действительно «ничего» не происходит, то вам следует убедиться, что событие нажатия кнопки по-прежнему связано с обработчиком события.

Вы закомментировали строку, в которой вы установили CommandText для запроса, поэтому вы пытаетесь выполнить команду с набором данных, отличным от запроса, что должно дать вам исключение.

0 голосов
/ 15 июля 2011

Я думаю, что-то ужасно неправильно в том, что у вас там есть.Вы присваиваете ответы свойству Text и уже имеете правильный ответ в строке.

Просто сравните то же самое с проверенным RadioButton Text, и вы поймете.Также трудно угадать, что вы запрашиваете в событии btnNextQuestion_Click, и у меня есть мои оговорки, так как это фактически тот же вопрос, который отображается в данный момент и с ответом, выбранным пользователем.

0 голосов
/ 15 июля 2011

Вы не привязываете btnNextQuestion_Click нигде в своем коде, и вы не даете cmdGet.CommandText в своей функции btnNextQuestion_Click. Возможно, вам придется быть более конкретным в том, что не происходит. Вы отладили это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...