我有以下代码:
private void someButton_Click(object sender, EventArgs e)
{
SomeForm f = new SomeForm();
this.SomeEvt += f.someFunc;
this.AnotherEvt += f.anotherFunc;
f.Show();
}
我应该f.someFunc
从this.SomeEvt
和f.anotherFunc
取消注册 this.AnotherEvt
吗?
f.anotherFunc
关闭时,我不想同时执行someFunc
或f
如果我应该取消注册,那么我该如何做到这一点,因为在此函数结束后不再有SomeForm f
?
我正在使用.Net framework 4.0和WinForms。
答案 0 :(得分:3)
根据您对我的评论的回答:
...当
f.anotherFunc
关闭时,我不想执行f
您应取消注册该事件,例如与lambda:
private void someButton_Click(object sender, EventArgs e)
{
SomeForm f = new SomeForm();
this.SomeEvt += f.someFunc;
this.AnotherEvt += f.anotherFunc;
f.FormClosed += (ss, ee) => {
this.SomeEvt -= f.someFunc;
this.AnotherEvt -= f.anotherFunc;
};
f.Show();
}