【问题标题】:Disposing MDI Child forms处理 MDI 子表单
【发布时间】:2012-10-18 16:05:22
【问题描述】:

根据msdn

关闭时未处理表单的两个条件是(1)它 是多文档界面 (MDI) 应用程序的一部分,并且 表格不可见; (2) 您已使用 显示对话框。在这些情况下,您需要手动调用 Dispose 以 将表单的所有控件标记为垃圾回收。

对于第一种情况,我该如何处理?如果我手动处理表单的 this.dispose() 并在 dispose 中设置断点(在表单的设计器文件中找到),则永远不会到达断点。

【问题讨论】:

    标签: winforms garbage-collection dispose mdi


    【解决方案1】:

    首先不要隐藏 MDI 子窗口,这没什么意义。如果您确实需要隐藏它们,请调用它们的 Dispose() 方法而不是它们的 Close() 方法。如果没有隐藏,Dispose() 也会关闭窗口。

    【讨论】:

    • 要在释放后再次显示表单,请检查表单的 IsDisposed 标志以避免错误“无法访问名为 的已释放对象”。这就是我所做的:if (_form.IsDisposed) _form = new Form();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多