执行消息框后关闭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

执行消息框后关闭Windows窗体

我认为您应该将额外的代码包装在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();
        }