您在哪里取消订阅UserControl
中的活动?我在Load
事件中订阅它,就像我在表单中所做的那样。在表格中,我通常会在Closing
事件中取消订阅,但我在UserControl
中找不到类似的内容...
答案 0 :(得分:4)
当您想要执行此操作时 次(例如,使用CAB时)。
为了完整起见,您的问题的答案是:
protected override void OnCreateControl()
{
base.OnCreateControl();
if(!DesignMode) //only time this.ParentForm should be null
this.ParentForm.FormClosing += ParentForm_FormClosing;
}
private void ParentForm_FormClosing(object sender, FormClosingEventArgs e)
{
//Unregister events here
}
您也可以覆盖Dispose()
答案 1 :(得分:2)
是否有必要取消订阅?是否在卸载后保留用户控件?如果没有,您不需要担心事件处理程序,因为只要从内存中删除用户控件,事件处理程序也是如此。你不会以这种方式泄漏引用。
答案 2 :(得分:1)
正如其他人所说,在您的方案中确实需要取消订阅吗?
如果您确实需要取消订阅,那么您完全按照订阅的相反方式执行:
UserControl1.Click -= new EventHandler(UserControl1_Click);