C# 用户控件上的Dispose,是否真的要编辑.designer.cs文件?

C# 用户控件上的Dispose,是否真的要编辑.designer.cs文件?,c#,controls,dispose,idisposable,C#,Controls,Dispose,Idisposable,对于具有必须释放的内部数据结构的用户控件,将该代码添加到.designer.cs文件中的Dispose方法的位置是否正确,或者是否存在我们打算使用的事件或其他内容 编辑:这是一个winforms用户控件。您能澄清什么类型的控件吗?ASP.NET、WinForms 在ASP.NET中,您可以: protected override void OnUnload(EventArgs e){ base.OnUnload(e); //Unload here... } 如果你说的是Wi

对于具有必须释放的内部数据结构的用户控件,将该代码添加到.designer.cs文件中的Dispose方法的位置是否正确,或者是否存在我们打算使用的事件或其他内容


编辑:这是一个winforms用户控件。

您能澄清什么类型的控件吗?ASP.NET、WinForms

在ASP.NET中,您可以:

protected override void OnUnload(EventArgs e){
     base.OnUnload(e);
     //Unload here...
}

如果你说的是WinForms,我通常采用两种方法之一来解决这个问题

方法1

打开Form.Designer.cs文件。在生成的dispose方法中,我添加了对DisposeCore的调用。然后我返回Form.cs并添加一个DisposeCore方法,该方法现在将在dispose期间调用。我将所有dispose逻辑添加到此方法中

技术上不支持编辑设计器文件。然而,我发现当设计者重新生成代码时,这种特殊的编辑不会被冲走

方法2


将事件处理程序添加到Form.Disposed,并在处理程序中执行dispose逻辑。这是一种更好的方法,因为它是一种受支持的操作,不会受到您尚未遇到的某些设计器生成的影响

或者,您可以将其剪切并粘贴到主.cs文件中。该代码不在“region Component Designer生成的代码”中,因此Studio不会错过它。

仅重新生成InitializeComponent()。designer.cs中的任何其他内容都可以使用。(至少对于VS2005而言)移动它不是更简单吗?