[英]How do I add Dispose functionality to a C# UserControl?
我有一个实现UserControl的类。 在.NET 2005中,在MyClass.Designer.cs部分类文件中自动创建Dispose方法,如下所示:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
如果我想添加自己的Dispose功能,我会把它放在哪里? 由于生成了这个文件,我不想在这里添加代码并冒着被吹走的风险。
所有Component
类都实现Disposed
事件。 您可以为该事件添加事件处理程序并清理其中的内容。
例如,在UserControl
您可以添加以下方法:
private void OnDispose(object sender, EventArgs e)
{
// do stuff on dispose
}
在构造函数(或在Load
事件处理程序中)添加以下行:
Disposed += OnDispose;
在这种情况下,我将生成的Dispose
方法移动到主文件并扩展它。 Visual Studio尊重这一点。
另一种方法是使用部分方法(C#3.0)。
我相信在这种情况下代码生成器会尊重您的代码。 把它放在代码隐藏中应该是安全的。
在VS 2005(和2008)中,您可以更新Dispose
方法,当您从设计器编辑控件时,它不会被删除。
如果需要,可以将其从.designer.cs文件移出到主.cs文件中。 如前所述,它不会被覆盖。
您只需要重载用户控件继承的Component Class中的public void Dispose()方法。
确保你将调用传递给基本方法以及在功能上进行处理,否则你将破坏功能,除非你完全实现它
我认为最干净的方法是让你的控件订阅自己的Disposed()事件并在那里进行清理。
UserControl有一个可以用来清理的Unloaded事件,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.