2

我有两个表单,并且我已经将它链接起来,这样当第二个表单关闭时,第一个也关闭(使用 FormClosing 方法)。

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

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

谢谢。

4

5 回答 5

2

调用Hide()表单 or Visible=false,但在这种情况下,表单保留在内存中,并且该表单分配的所有资源都保留在内存中。

如果这对您来说是个问题,我建议您修改您的架构。

于 2012-02-15T12:31:28.253 回答
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(); }
        }
    }

现在可以从应用程序中的任何形式关闭应用程序。

于 2012-02-22T14:00:52.057 回答
0

你想用form.Hide().

这只是向用户隐藏了表单,而没有实际关闭它。

于 2012-02-15T12:33:40.357 回答
0
this.Hide();

或者

this.Visible = false;
于 2012-02-15T12:33:46.890 回答
-1

如果您使用 WinForms 表单,则Hide()方法应该是您正在寻找的方法。

于 2012-02-15T12:34:51.520 回答