我已经将事件处理程序设置为这样的事件:
frm.FormClosed += (sender, args) =>
{
if (this.myGrid.Enabled)
{
this.myGrid.Select();
}
};
frm.Show();
我希望在表单关闭后挂出eventhandler。
你能帮助我吗?
答案 0 :(得分:4)
我希望在表单关闭后挂出eventhandler。
我假设您要删除它。
没必要,不要在上面浪费时间。关闭表单(和Disposed)时,也会收集事件处理程序。它是同一表单的成员,后面是代码中的this
一词。
如果您仍想删除它,则需要一份副本:
FormClosedEventhandler closeHandler; // class member
closeHandler = (sender, args) =>
{
if (this.myGrid.Enabled)
{
this.myGrid.Select();
}
};
frm.FormClosed += closeHandler ; // OnLoad
...
frm.FormClosed -= closeHandler ; // OnClose
答案 1 :(得分:4)
如果您的意思是如何从事件中删除事件处理程序,那么您将无法使用匿名委托,但您可以创建具有相同参数和相同代码的方法,然后:
private void EventHandler(object sender, FormClosedEventArgs e)
{
if (this.myGrid.Enabled)
{
this.myGrid.Select();
}
}
frm.FormClosed += EventHandler; // Attach the event handler
frm.FormClosed -= EventHandler; // Remove the event handler