我应该在哪里处理子表单

本文关键字:表单 理子 处理 在哪里 我应该 | 更新日期: 2023-09-27 17:57:26

我有一个FormA,当按下按钮时,它会创建另一个表单FormB。

我应该在哪里处理FormB。在FormA关闭事件中处理FormB可以吗?

我应该在哪里处理子表单

当FormB关闭(使用.Close方法)时,它将被处理,因此您不需要手动调用.Dispose方法。

当FormB通过单击X或其他可能隐藏的位置关闭时,它不会被处理。如果该实例中的该表单经常出现,请在FormA或应用程序退出时处理它。如果该表单没有经常打开,您甚至可以在按钮的单击事件处理程序中进行处理。using关键字是可能的。

using(FormB b = new FormB())
{
    if(b.ShowDialog() == DialogResult.OK) {...} else {...}
}

当然,只有当它显示为模态时,这才有可能。

 protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

您可以在表单designer.cs文件中看到这一点,它将在表单关闭时被调用,因此无需担心处理

来自msdn

表单不是当(1)处于关闭状态时多文档界面的一部分(MDI)应用程序,而表单不是看得见的和(2)您已显示使用ShowDialog的窗体。在这些情况下,您需要调用Dispose手动标记表单的所有垃圾收集控件。

最好使用:

using (var modalForm = new FormB())
{
    modalAddUser.ShowDialog();
}