我应该在哪里处理子表格

时间:2011-05-20 13:49:47

标签: c#

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

我应该在哪里处置FormB。 在FormA Closing事件中处理FormB是否可以?

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

当单击X或其他可能隐藏的FormB关闭FormB时,它不会被丢弃。如果该实例中的那个表单经常出现,请在FormA或应用程序退出时将其处理掉。如果没有打开那个表单,你甚至可以在按钮的click-event-handler中处理它。可以使用using关键字。

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

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

答案 2 :(得分:0)

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

你可以在表单designer.cs文件中看到它,当表单关闭时会调用它,所以不必担心dispose

答案 3 :(得分:0)

from msdn

  

表单不是的两个条件   处于关闭状态时是(1)它   多文档界面的一部分   (MDI)应用程序,而表单则不是   可见; (2)你已经展示了   使用ShowDialog的表单。在这些   在这种情况下,您需要调用Dispose   手动标记所有表单   控制垃圾收集。

最好使用:

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