以编程方式取消挂钩事件处理程序

B. *_*non 1 c# events event-handling winforms textchanged

我想有条件地取消挂钩事件处理程序.这是正确的方法:

tb.TextChanged -= textBoxIntName_TextChanged;
Run Code Online (Sandbox Code Playgroud)

这似乎是明智的,因为它需要连接起来:

tb.TextChanged += textBoxIntName_TextChanged;
Run Code Online (Sandbox Code Playgroud)

...但似乎对应于"Delphi方式"的东西更有意义(但唉,它不能编译):

tb.TextChanged = nil;
Run Code Online (Sandbox Code Playgroud)

Ser*_*kiy 5

您无法分配事件 - 仅客户端可以使用附加(+ =)和删除( - =)操作.

阅读更多有关活动的信息.

C#规范也:

由于+ =和 - =是在声明事件的类型之外的事件上允许的唯一操作,因此外部代码可以添加和删除事件的处理程序,但不能以任何其他方式获取或修改事件处理程序的基础列表.