private void Form1_Load(object sender, EventArgs e)
{
if (count == 2)
{
MessageBox.Show("Congrats You Score is : " + Marks, "Result", MessageBoxButtons.OK);
SendKeys.Send("%{F4}");//tried Application.Exit() this.Close();
}
string choice = src.ReadLine();
string ques = srq.ReadLine();
opt = choice.Split('\t');
label1.Font = new Font("Times New Roman", 15);
label1.Text = ques;
ch1.Font = new Font("Times New Roman", 15);
ch1.Text = opt[0];
ch2.Font = new Font("Times New Roman", 15);
ch2.Text = opt[1];
ch3.Font = new Font("Times New Roman", 15);
ch3.Text = opt[2];
ch4.Font = new Font("Times New Roman", 15);
ch4.Text = opt[3];
}
我正在尝试在GUI中进行简单的测验这不是家庭作业BTW我已经制作了一个控制台测验程序,现在希望在GUI中完成。我是初学者,我只是在网上搜索并试图创建这个Windows窗体:
private void button1_Click(object sender, EventArgs e)
{
if (ch1.Checked == false && ch2.Checked==false && ch3.Checked==false && ch4.Checked==false)
{
MessageBox.Show("Please Choose An Answer", "Error", MessageBoxButtons.OK,MessageBoxIcon.Error);
}
else if (ch1.Checked){
check(ch1);
// MessageBox.Show("Marks : "+Marks);
++count;
Form1_Load(new Object(), new EventArgs());
ch1.Checked = false;
}
else if(ch2.Checked){
check(ch2);
++count;
Form1_Load(new Object(), new EventArgs());
ch2.Checked = false;
}
else if(ch3.Checked){
check(ch3);
++count;
Form1_Load(new Object(), new EventArgs());
ch3.Checked = false;
}
else if (ch4.Checked){
check(ch4);
++count;
Form1_Load(new Object(), new EventArgs());
ch4.Checked = false;
}
}
上述方法继续加载新问题及其选项,然后按下“下一步”按钮。
现在我希望测验在计数达到2或可能更多后退出。我尝试了this.Close()
,SendKey,Environment.Exit(0, inputsimulator
(是的,我确实下载了.dll
文件,并使用命名空间添加了它的参考资料)也不起作用。
此外,inputsimulator的缺点是只有在选择App时它才有效...
sendkeys
无论应用是否被选中都有效,所以它不是更好......
我知道this.close()
需要鼠标点击或类似事件才能正常工作,但我希望测验显示得分并在所有问题得到回答后自行关闭......
目前测验未关闭,并且因为从中读取问题和选项的文件没有任何内容而抛出异常......
答案 0 :(得分:2)
我相信你应该在else语句中包含你的附加代码。这将保留您不希望执行的内容。
“this.Close();”应该管用。如果这是您的应用程序的主窗口,并且您想要关闭该应用程序,那么您可能希望使用“Application.Exit();”
if (count == 2)
{
MessageBox.Show("Congrats You Score is : " + Marks, "Result", MessageBoxButtons.OK);
this.Close();
}
else
{
string choice = src.ReadLine();
string ques = srq.ReadLine();
opt = choice.Split('\t');
label1.Font = new Font("Times New Roman", 15);
label1.Text = ques;
ch1.Font = new Font("Times New Roman", 15);
ch1.Text = opt[0];
ch2.Font = new Font("Times New Roman", 15);
ch2.Text = opt[1];
ch3.Font = new Font("Times New Roman", 15);
ch3.Text = opt[2];
ch4.Font = new Font("Times New Roman", 15);
ch4.Text = opt[3];
}
至于你的阵列部分,我实际上会这样做。
List<string> opt = choice.Split('\t').ToList<string>();
label1.Font = new Font("Times New Roman", 15);
label1.Text = ques;
if(opt.Count >= 1)
{
ch1.Font = new Font("Times New Roman", 15);
ch1.Text = opt[0];
}
if(opt.Count >= 2)
{
ch2.Font = new Font("Times New Roman", 15);
ch2.Text = opt[1];
}
if(opt.Count >= 3)
{
ch3.Font = new Font("Times New Roman", 15);
ch3.Text = opt[2];
}
if(opt.Count >= 4)
{
ch4.Font = new Font("Times New Roman", 15);
ch4.Text = opt[3];
}
您可能需要将其添加到顶部。
using System.Collections.Generic;
答案 1 :(得分:0)
首先检查你的计数变量值,我认为你的计数变量值保持不同于2的值,这就是你的应用程序没有关闭的原因,因为你只是在计数变量值等于二。
为了确保你的计数变量有问题,在检查它是否等于2之前,尝试将count varbile值设置为2。否则你可以使用调试模式来调试这个
count= 2 ; // Set count to two , it doesn't matter where you set it to two , however it has to be set to two before you call this code if you really need to exit the program when you call this code.
if (count == 2)
{
MessageBox.Show("Congrats You Score is : " + Marks, "Result", MessageBoxButtons.OK);
SendKeys.Send("%{F4}");//tried Application.Exit() this.Close();
}