在表单处理时处置非组件?

时间:2010-09-30 16:49:20

标签: c# winforms idisposable

我的表单中包含一个实现IDisposable但不是IComponent的成员。我需要在表单处理时处理它。不幸的是,表单的dispose已经在代码的自动生成部分中实现,并且不是部分的。

我该如何处置这个物体?

2 个答案:

答案 0 :(得分:4)

覆盖表单中的Form.Dispose(bool),并在那里处理您的对象。

为了理解其工作原理,您可以参考Implementing a Dispose Method上的MSDN页面。 Form类遵循此模式,允许您覆盖子类中的Dispose(bool)。 (只需确保在覆盖中正确调用base.Dispose(disposing)。)


如果您不方便将.designer.cs文件中的文件移动到主.cs文件中,另一个选项是订阅您自己的FormClosed事件,并在该事件处理程序中处理您的资源。 MSDN推荐这种方法 - 来自FormClosed的文档:

  

您可以使用此事件执行诸如释放表单使用的资源以及保存表单中输入的信息或更新其父表单等任务。

答案 1 :(得分:1)

您可以将重写的Dispose(bool)方法移动到部分类的一侧。根据经验,它不会在设计师部分重新创建。