如何将Disposefunction添加到C#UserControl?

我有一个实现UserControl的类。 在.NET 2005中,Dispose方法在MyClass.Designer.cs的部分类文件中自动创build,如下所示:

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

如果我想添加我自己的Disposefunction,我会把它放在哪里? 由于这个文件是生成的,我不想在这里添加代码,并冒着被风吹走的风险。

在这种情况下,我将生成的Dispose方法移动到主文件并进行扩展。 Visual Studio尊重这一点。

另一种方法是使用部分方法(C#3.0)。

所有Component类都实现Disposed事件。 您可以为该事件添加一个事件处理程序,并清理那里的事物。

我相信在这种情况下,代码生成器会尊重您的代码。 把它放在代码隐藏中应该是安全的。

在VS 2005(和2008)中,您可以更新Dispose方法,并且在您从devise人员编辑控件时不会被删除。

如果需要,可以将其从.designer.cs文件中移出并放到主要的.cs文件中。 如前所述,它不会被覆盖。

您只需重载用户控件inheritance的组件类中的public void Dispose()方法。

确保您将调用传递给基本方法以及在function上进行处理,否则将会中断function,除非您完全实现

我会认为最简洁的方法是让你的控件订阅自己的Disposed()事件,并在那里进行清理。

UserControl有一个Unloaded事件可用于清理,