在窗体 1 中检测窗体 2 已关闭

本文关键字:窗体 检测 | 更新日期: 2023-09-27 18:36:27

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

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

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

在窗体 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之前将不可用(我假设这不是您正在寻找的行为)。

在这种特殊情况下

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

将正常工作。 如果您希望能够在 form2 打开时在 form1 中执行操作,则需要使用"显示"而不是"显示对话框"。 然后,您可以为 form1 中关闭的表单创建一个处理程序。

form2.FormClosed += new FormClosedEventHandler(form2_FormClosed);