隐藏表单而不调用FormClosing方法

时间:2012-02-15 12:29:20

标签: c# forms hide formclosing

我有两种形式,我把它连接起来,这样当第二种形式关闭时,第一种形式也被关闭(使用FormClosing方法)。

这个问题是,当我希望隐藏第二个表单时,它会自动关闭第一个表单。有没有一种方法可以隐藏表单而不实际调用FormClosing方法?

当使用“Visible = false”和“Hide()”时,似乎仍然会调用FormClosing方法。

感谢。

5 个答案:

答案 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()方法应该是您正在寻找的方法。