关闭表单然后再调用另一个表单

elv*_*spt 15 c# forms winforms

我想关闭我正在使用的当前表单(MainForm),然后打开第二个表单(Form).

我试过了:

private void buttonStartQuiz_Click(object sender, EventArgs e)
{
    this.Close();

    Form2 form2 = new Form2();
    form2.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)

或者添加this.Close();form2.ShowDialog()也不起作用.

任何提示?

编辑:也可以通过this.Close()form2.ShowDialog()关闭新表单后关闭它来添加它.如果我选择form2.Show()它会立即关闭两个表格.

Svi*_*ack 35

更改

this.Close();
Run Code Online (Sandbox Code Playgroud)

至:

this.Hide();
Run Code Online (Sandbox Code Playgroud)

因为您无法关闭主应用程序窗口并希望应用程序在其后运行.您必须隐藏主窗体或将主窗口更改为仍然打开的窗口.

在这种情况下,您必须在ShowDialog()结束后关闭主窗口.然后,您必须添加此按钮事件功能的结尾this.Close()

您的代码新代码是:

private void buttonStartQuiz_Click(object sender, EventArgs e)
    {
        // hide main form
        this.Hide();

        // show other form
        Form2 form2 = new Form2();
        form2.ShowDialog();

        // close application
        this.Close();
    }
Run Code Online (Sandbox Code Playgroud)


Han*_*ant 6

您可以使用ApplicationContext,但.NET框架已经非常好地支持使用WindowsFormsApplicationBase类的这种窗口模式.它的ShutdownStyle属性可用于仅在最后一个窗口关闭后关闭程序.使Program.cs中的代码如下所示:

using System;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices;  // Add reference to Microsoft.VisualBasic!!

namespace WindowsFormsApplication1 {
  class Program : WindowsFormsApplicationBase {
    [STAThread]
    static void Main(string[] args) {
      var app = new Program();
      app.EnableVisualStyles = true;
      app.ShutdownStyle = ShutdownMode.AfterAllFormsClose;
      app.MainForm = new Form1();
      app.Run(args);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)