我有两种形式,我把它连接起来,这样当第二种形式关闭时,第一种形式也被关闭(使用FormClosing方法)。
这个问题是,当我希望隐藏第二个表单时,它会自动关闭第一个表单。有没有一种方法可以隐藏表单而不实际调用FormClosing方法?
当使用“Visible = false”和“Hide()”时,似乎仍然会调用FormClosing方法。
感谢。
答案 0 :(得分:2)
在表单或Hide()
上调用Visible=false
,但在这种情况下,表单仍保留在内存中,并且该表单的所有已分配资源都保留在内存中。
如果这对您来说是一个问题,我建议您修改您的架构。
答案 1 :(得分:2)
我更改了程序,以便按以下方式启动:
MainForm mainForm = new MainForm();
mainForm.Show();
Application.Run();
而不是:
Application.Run(new MainForm());
在每个表单中,我添加了一个FormClosing事件,该事件检查用户是否已选择关闭应用程序。如果是这种情况,则会向用户显示提示,要求确认:
private void ImageSelect_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
if (DialogResult.No == MessageBox.Show("Are you sure you wish to exit?", "Exit Confirmation", MessageBoxButtons.YesNo))
e.Cancel = true;
else { Application.Exit(); }
}
}
现在可以从应用程序中的任何表单关闭应用程序。
答案 2 :(得分:0)
您想使用form.Hide()
。
这只是隐藏了用户的表单而没有实际关闭它。
答案 3 :(得分:0)
this.Hide();
或
this.Visible = false;
答案 4 :(得分:-1)
如果您使用WinForms表单,那么 Hide()方法应该是您正在寻找的方法。