我正在进行一项测试,但是在尝试增加其复杂性后,它不能完全正常工作。目前发生的一切是我的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");
}
}
}
}
}
总而言之,可能的答案会加载到表单中,但是当我按下表单上的按钮以确定是否选择了正确的答案时,一切都没有发生。
答案 0 :(得分:0)
您没有在代码中的任何位置约束btnNextQuestion_Click
,并且您未在cmdGet.CommandText
函数中提供btnNextQuestion_Click
。您可能必须更具体地了解未发生的事情。你调试了吗?
答案 1 :(得分:0)
如果真的“没有”发生,那么你应该检查按钮的click事件是否仍然绑定到事件处理程序。
您已注释掉为查询设置CommandText
的行,因此您尝试执行不带查询集的命令,这会给您一个例外。
答案 2 :(得分:0)
我认为你所拥有的东西是非常错误的。您正在为Text属性分配答案,并且已在字符串中包含正确的答案。
只需针对选中的RadioButton
文字检查相同内容,您就会知道。
另外很难猜到你在btnNextQuestion_Click
事件中查询的是什么,我有我的预订,因为它实际上是当前显示的问题,也是用户选择的答案。