C#如何删除委托

use*_*344 3 c# delegation

可能重复:
在C#中取消订阅匿名方法

我有一些Panels,在创建时,他们被委派为可点击:

int z2 = z;
PicBx[z].Click += delegate { clicked(z2, null); };
Run Code Online (Sandbox Code Playgroud)

如果程序要求它,我希望能够删除它.我试过用:

int z2 = z;
PicBx[z].Click -= delegate { clicked(z2, null); };
Run Code Online (Sandbox Code Playgroud)

但它没有用.有没有办法从中删除可点击的委托?

Ars*_*yan 10

您无法取消订阅匿名委托,您需要保留对委托的引用

var myClickDelegate = (RoutedEventHandler)delegate { clicked(z2, null); };

PicBx[z].Click += myClickDelegate;

...

PicBx[z].Click -= myClickDelegate;
Run Code Online (Sandbox Code Playgroud)

或者创建命名函数

希望这可以帮助