相关疑难解决方法(0)

如何从事件中删除所有事件处理程序

要在控件上创建新的事件处理程序,您可以执行此操作

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)

但是如何从事件中删除所有事件处理程序?

.net c# events

348
推荐指数
8
解决办法
39万
查看次数

在C#中使用Lambda的一次性事件

我发现自己经常这样做: -

 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中?

c# events lambda

44
推荐指数
3
解决办法
8195
查看次数

标签 统计

c# ×2

events ×2

.net ×1

lambda ×1