如何在事件处理程序触发后删除事件处理程序,以便它只能执行一次?
c.Click += (o,e)=>{
Console.WriteLine("Clicked!");
/*I want to remove this event handler now so that it doesn't fire anymore*/
}
Run Code Online (Sandbox Code Playgroud)
您需要将事件处理程序存储在变量中,以便稍后可以引用它.因为您想从处理程序中引用处理程序,所以在初始化之前还需要声明它.最后,您不能使用未初始化的变量,因此您需要null先将其初始化,即使永远不会读取该空值.
EventHandler handler = null;
handler = (o,e)=>{
Console.WriteLine("Clicked!");
c.Click -= handler;
}
c.Click += handler;
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用命名方法,而不是匿名方法.
| 归档时间: |
|
| 查看次数: |
1356 次 |
| 最近记录: |