关闭表单然后再调用另一个表单
我想关闭我正在使用的当前表单(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(); }
为我工作。