如何将Dispose功能添加到C#UserControl?
时间:2020-03-06 15:05:01 来源:igfitidea点击:
我有一个实现UserControl的类。在.NET 2005中,将在MyClass.Designer.cs部分类文件中自动创建一个Dispose方法,如下所示:
protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); }
如果要添加自己的Dispose功能,我应该放在哪里?由于此文件已生成,因此我不想在此处添加代码,否则有被吹走的风险。
解决方案
我相信在这种情况下,代码生成器会尊重代码。将其放在后面的代码中应该是安全的。
在VS 2005(和2008)中,我们可以更新Dispose方法,当我们从设计器中编辑控件时,该方法将不会被删除。
如果需要,可以将其从.designer.cs文件移出,然后移入主.cs文件。正如已经说过的那样,它不会被覆盖。
在这种情况下,我将生成的" Dispose"方法移至主文件并对其进行扩展。 Visual Studio对此表示尊重。
另一种方法是使用部分方法(C3.0)。
所有Component
类均实现Disposed
事件。我们可以为该事件添加事件处理程序,然后在其中清除内容。
例如,在UserControl中,我们可以添加以下方法:
private void OnDispose(object sender, EventArgs e) { // do stuff on dispose }
然后在构造函数中(或者在Load
事件处理程序中)添加以下行:
Disposed += OnDispose;
我们只需要重载用户控件继承的Component Class中的公共void Dispose()方法。
确保将调用传递给基本方法以及进行功能上的处置,否则,除非我们完全实现它,否则将破坏该功能