2011-11-23 57 views
2

在C#中处理UserControl时会发生什么情况?我想赶上它来做一些清理工作,但是在查看设计器中可用的事件列表后,似乎没有这样的事情了?C#捕获UserControl处理的事件是什么?

+0

你如何创建用户控制? – Oded

+0

很VSTO C#插件 – Jerome

+0

窗格那么具体,我向它(以及我创建使用设计它,就这么简单) – Jerome

回答

6

这听起来像Disposed事件是你在找什么。

+0

有没有让一些清理工作可以做之前的用户控件实际上是一个“转让”事件配置? – hrh

+1

@hrh它不是一个事件,但是你可以重写你的用户控件的['Dispose'(http://msdn.microsoft.com/en-us/library/d9yzd5cx.aspx)方法 - 这是你应该清理资源(确保您仍然称为基础实施) – Justin

10

当您创建在yourUserControlName.Designer.cs文件中创建自动为您Dispose方法的用户控件。添加任何清理代码的方法。您可能需要将自动生成的代码更改为如下所示:

protected override void Dispose(bool disposing) 
    { 
     if (disposing) 
     { 
      if (components != null) 
      { 
       components.Dispose(); 
      } 
      // your clean up code here 
     } 
     base.Dispose(disposing); 
    } 

这样您的清理代码将不依赖于组件对象。

+1

建议:在组件清理之前进行清理,尤其是在需要清理组件时。举例来说,如果你有这都需要在用户控制设置要序列化的数据的BindingSource的用户控件:你需要能够访问BindingSource的序列化 –

+2

您可以将这些代码到你yourUserControlName.cs项目文件,因此您不必手动更改设计器文件中的任何代码。 – JohnSaps

+0

你也可以重写'OnHandleDestroyed',当底层HWnd被销毁时,通常在父窗体关闭时会被调用。 –