处理用户控件,真的是要编辑.designer.cs文件吗?

时间:2009-03-23 11:12:58

标签: c# controls dispose idisposable

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

修改:这是一个winforms用户控件。

3 个答案:

答案 0 :(得分:3)

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

方法1

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

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

方法2

向Form.Disposed添加一个事件处理程序,并在处理程序中执行我的dispose逻辑。这是首选方式,因为它是受支持的操作,不会受到您尚未遇到的某些设计师生成的影响。

答案 1 :(得分:1)

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

在ASP.NET中你可以:

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

答案 2 :(得分:1)

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