我的c#windows项目中有两个表单。第一种形式被称为";loginform";另一个被称为";主窗体"。我想点击按钮移动到主窗体,但当我到达主窗体时,问题是当我试图关闭我的第二个窗体时,它被命名为";主窗体";在这里,应用程序没有关闭,我不得不使用visualstudio来终止项目。下面是转到第二种形式的代码
this.Hide();
mainform mf = new mainform();
mf.Show();
private void mainform_FormClosed(object sender, FormClosedEventArgs e)
{
Application.ExitThread();
}
您遇到的问题是,当代码将其设置为"隐藏"时,"您的代码"基本上"丢弃"了对this
的任何引用…
this.Hide();
执行这行代码后,创建并显示mainform
…
mainform mf = new mainform();
mf.Show();
假设上面的代码"之后"没有代码…那么基本上this
现在已经丢失了。用户既看不到表单,也无法与表单交互。显示了mainform
…但它对this
一无所知。this
现在丢失了,您无法找回它。这就是为什么它一直在运行。
显然,mainform
对this
一无所知,即……"创造"它的形式,但它确实需要this
才能生存。如果我们"关闭"this
,而this
创建了mainform
……那么mainform
取决于this
,并且在this
关闭时也将关闭。
mainform mf = new mainform();
mf.Show();
this.Close();
然后,一旦this
关闭,mainform
就会被杀死。所以这是行不通的。但是……如果您将Show
更改为ShowDialog
……对于mf.ShowDialog()
,则它将工作,并且this
将正确关闭。
因此,如果您想"关闭"创建"另一个表单的表单,那么您应该为mainform
派生另一个进程,或者将this
传递给mainform
,并让它在完成后关闭它。我相信还有其他方法可以做到这一点,如果Application.ExitThread();
。。。为你工作,然后去争取。