我有一个窗体,其中我动态加载多个用户控件。我处理每个控件的事件。用事件处理程序动态加载用户控件 - 取消注册
UserControl userControl1 = LoadControl("control.ascx") as UserControl;
userControl1.Event += new ControlEventHandler(userControl_Event);
this.Panel.Controls.Add(userControl1);
UserControl userControl2 = LoadControl("control.ascx") as UserControl;
userControl2.Event += new ControlEventHandler(userControl_Event);
this.Panel.Controls.Add(userControl2);
...
现在,当我得到的面板上摆脱控制的,我只是做了
this.Panel.Controls.Clear();
是否清除()函数取摆脱事件的护理或我应该做
foreach(Control control in this.Panel.Controls)
{
UserControl userControl = control as UserControl;
if(userControl != null)
{
userControl -= userControl_Event;
}
}
之前我清除()面板的内容?
基本上,我正在寻找一种方式来动态加载用户控件,并处理他们的事件,而不会造成泄漏,当我摆脱他们。
谢谢!
编辑: 因为我的控件在页面中的Page_Init事件创建(每次,因为它们是动态加载),是正确地说,他们的寿命长度不能大于页面的寿命? 从我所了解的情况来看,该控件在发布后不存在。每次创建一个新的。因此,我不应该注销事件,因为它在下一页加载时甚至不存在。那是对的吗?