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

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

我试过了:

private void buttonStartQuiz_Click(object sender, EventArgs e) { this.Close(); Form2 form2 = new Form2(); form2.ShowDialog(); } 

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

任何提示?

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

更改

 this.Close(); 

至:

 this.Hide(); 

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

在这种情况下,您必须在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(); } 

您可以使用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); } } } 

这对我来说很好……

 private void button_Name_Click(object sender, EventArgs e) { form_2 Form2 = new Form2(); Form2.ShowDialog(); this.Close(); } 
 Form2 frm2 = new Form2(); frm2.ShowDialog(); 

 this.Close(); 

不是一个很好的组合..

frm2实际上会加载,但你甚至看不到它,因为this.Close(); 将在一毫秒内关闭每一个表格……

 this.Hide(); 

作品…

只需启用或禁用表单本身,而不是尝试关闭。

编码就像:

 this.enabled = false; 

在点击事件中或您想要的任何地方。

希望能帮助到你。

只需替换this.Close(); 与this.Hide(); 它会完美地运作!

您正在关闭表单,您必须先加载第二个表单。

 private void buttonStartQuiz_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.ShowDialog(); this.Close(); } 
 this.Visible = false; Form2 form2 = new Form2(); form2 .ShowDialog(); this.Close(); 
 new play().Show(); this.Dispose(); 

试试这个:

 btCancel.FindForm().Close(); 

btcancel是一个放在要关闭的表单上的按钮。

把它放在主要forms

 private void mainform_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); } 

为我工作。