我应该在哪里处理子表单
本文关键字:表单 理子 处理 在哪里 我应该 | 更新日期: 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();
}