如果在 Form1 中实例化一个 Form2 那么必然会一关都关因为此时 F2的实例是属于F1的可以这样做修改 Program.cs 文件的 Main 方法 static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); Form2 frm = new Form2(); frm.ShowDialog(); }如果通过验证,那么就关闭窗体1,窗体2也就自然的出来了如果没通过则 application.exit(); 关闭整个应用程序
这两个窗口不能在同一个线程中。必须一个主线程。在主线程中打开原来的from,当原来的from关闭事件时,在主线程中打开新的form。 如果在同一个线程中,那么原窗口关闭,新窗口也会自动关闭。因为新窗口是原窗口的子窗口。你想父亲都不在了,儿子窗口怎么会还在呢。
线程操作比较麻烦,建议楼主考虑使用:form2 new出来时,form1 hide,需要的时候又show出来!简单!代码:form1: fmm = this; Form2 fm = new Form2(); fm.Show(); fmm.Hide();form2: Form1.fmm.Show(); Close();在form1建个form型变量记录form1的窗口! public static Form fmm;