4

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

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

4

3 回答 3

5

如果您在谈论 WinForms,我通常采用两种方法之一来解决此问题。

方法一

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

技术上不支持编辑设计器文件。但是我发现当设计器重新生成代码时,这个特定的编辑不会被冲走。

方法二

将事件处理程序添加到 Form.Disposed 并在处理程序中执行我的处置逻辑。这是更可取的方式,因为它是受支持的操作,并且不会受到您尚未遇到的某些设计器世代的影响。

于 2009-03-23T13:08:56.670 回答
1

你能澄清一下什么样的控制吗?ASP.NET,WinForms?

在 ASP.NET 中,您可以:

protected override void OnUnload(EventArgs e){
     base.OnUnload(e);
     //Unload here...
}
于 2009-03-23T11:22:41.963 回答
1

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

于 2014-02-26T14:37:44.100 回答