我有一個窗體,其中我動態加載多個用戶控件。我處理每個控件的事件。用事件處理程序動態加載用戶控件 - 取消註冊
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事件創建(每次,因爲它們是動態加載),是正確地說,他們的壽命長度不能大於頁面的壽命? 從我所瞭解的情況來看,該控件在發佈後不存在。每次創建一個新的。因此,我不應該註銷事件,因爲它在下一頁加載時甚至不存在。那是對的嗎?