执行消息框后关闭Windows窗体
本文关键字:Windows 窗体 消息 执行 | 更新日期: 2023-09-27 18:19:22
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中做一个简单的测验,这不是家庭作业,顺便说一句,我已经做了一个控制台测验程序,现在希望在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也有缺点,它只在应用程序被选中时工作…sendkeys
工作是否选择应用程序,所以它不是更好......
我明白像鼠标点击这样的事件是this.close()
工作所必需的,但我希望测验显示分数并在所有问题都回答后关闭它自己…
当前测验没有关闭,并且抛出异常,因为读取问题和选项的文件没有任何剩余......
我已经访问了以下链接Link1Link2Link3
我认为您应该将额外的代码包装在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];
}
对于你的Array Section,我会这样做。
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;
首先检查你的count变量的值,我认为你的count变量持有的值不同于2,这就是为什么你的应用程序没有关闭,因为你只在count变量值等于2时才关闭应用程序。
为了确保你的count变量有问题,在检查它是否等于2之前,尝试将count变量的值设置为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();
}