在Form1中检测Form2是否已关闭

4

我正在尝试检测form2在form1中是否关闭。目前我有以下代码:

    private void AddStageBtn_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.ShowDialog();
        if (form2.IsDisposed)
        {
            MessageBox.Show("it was closed!");
        }
    }

有什么建议吗?再次感谢!

3
如果您使用ShowDialog,直到该窗体关闭其余代码才会执行,因此根本不需要任何条件语句。 - Kevin DiTraglia
你能否详细说明一下,通过创建一个“模态”新表单并在同一方法中再次检查它是否已被释放,你试图实现什么? - Angshuman Agarwal
2个回答

3

请在Form2的FormClosed事件上坚持使用它。

无论您在何处创建它,请执行以下操作:

form2.FormClosed += new FormClosedEventHandler(form2_FormClosed);

然后创建这个方法:
void form2_FormClosed(object sender, FormClosedEventArgs e)
{
    // Do whatever you want here
}

您还需要使用.Show()而不是.ShowDialog(),如果您想要能够使用任一表单,否则form1将不可用,直到form2关闭(我假设这不是您要寻找的行为)。

2
在这种特定情况下,
private void AddStageBtn_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.ShowDialog();
    MessageBox.Show("it was closed!");
}

这将能够正常工作。如果您想在打开form2的同时在form1中执行操作,您需要使用Show而不是ShowDialog。然后,您可以在form1中创建一个处理程序来处理form2关闭的事件。

form2.FormClosed += new FormClosedEventHandler(form2_FormClosed);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接