3

我试图检测到 form2 在 form1 中关闭。到目前为止我有这个

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

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

4

2 回答 2

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);
于 2012-06-05T17:44:50.343 回答
2

坚持FormClosedform2的事件。

无论您在哪里创建它:

form2.FormClosed += new FormClosedEventHandler(form2_FormClosed);

然后创建方法:

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

如果您希望能够使用任何一种形式,您还需要使用.Show()而不是,否则在关闭之前将不可用(我假设这不是您正在寻找的行为)。.ShowDialog()form1form2

于 2012-06-05T17:45:03.363 回答