执行消息框后关闭Windows窗体

时间:2013-06-21 22:06:30

标签: c# .net winforms

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()需要鼠标点击或类似事件才能正常工作,但我希望测验显示得分并在所有问题得到回答后自行关闭......

目前测验未关闭,并且因为从中读取问题和选项的文件没有任何内容而抛出异常......

我访问了以下链接 Link1 Link2 Link3

2 个答案:

答案 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();

        }