在form1中检测到form2是关闭的

时间:2012-06-05 17:41:42

标签: c# forms

我正在尝试检测form2在form1中是否已关闭。到目前为止我有这个

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

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

2 个答案:

答案 0 :(得分: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.FormClosed += new FormClosedEventHandler(form2_FormClosed);

答案 1 :(得分:2)

坚持form2的FormClosed事件。

无论您在何处创建,都可以:

form2.FormClosed += new FormClosedEventHandler(form2_FormClosed);

然后创建方法:

void form2_FormClosed(object sender, FormClosedEventArgs e)
{
    // Do whatever you want here
}

如果您希望能够使用任何一种表单,也可以使用.Show()代替.ShowDialog(),否则在form1关闭之前form2将无法使用(我假设的不是您正在寻找的行为)。