要在控件上创建新的事件处理程序,您可以执行此操作
c.Click += new EventHandler(mainFormButton_Click);
Run Code Online (Sandbox Code Playgroud)
或这个
c.Click += mainFormButton_Click;
Run Code Online (Sandbox Code Playgroud)
并删除事件处理程序,您可以执行此操作
c.Click -= mainFormButton_Click;
Run Code Online (Sandbox Code Playgroud)
但是如何从事件中删除所有事件处理程序?
我发现自己经常这样做: -
EventHandler eh = null; //can't assign lambda directly since it uses eh
eh = (s, args) =>
{
//small snippet of code here
((SomeType)s).SomeEvent -= eh;
}
variableOfSomeType.SomeEvent += eh;
Run Code Online (Sandbox Code Playgroud)
基本上我只想附加一个事件处理程序来监听事件中的一个镜头,之后我再也不想保持连接.通常,"代码片段"只是一行.
我的思绪有点麻木,我确信必须有一些我可以做的事情,所以我不需要重复所有这些开销.请记住,这EventHandler可能是EventHandler<T>.
任何想法如何我可以整理代码的重复部分,只是将片段留在Lambda中?