如何将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事件可用于清理,