2014-01-15 182 views

回答

6

您需要将事件处理程序存储在一个变量,让你可以参考它以后。因为您想从处理程序中引用处理程序,所以在初始化之前还需要声明它。最后,你不能使用一个未初始化的变量,所以你需要首先将它初始化为null,尽管这个空值永远不会被读取。

EventHandler handler = null; 
handler = (o,e)=>{ 
    Console.WriteLine("Clicked!"); 
    c.Click -= handler; 
} 
c.Click += handler; 

另一种选择是使用命名方法而不是匿名方法。

1

如果您使用命名方法而不是匿名lambda方法,这将变得更加容易。

c.Click += MyHandler; 


void MyHandler(object sender, EventArgs e) 
{ 
    Console.WriteLine("Clicked!"); 
    ((Button)sender).Click -= MyHandler; 
} 
相关问题