C#如何删除委托

时间:2011-08-09 21:12:36

标签: c# delegation

  

可能重复:
  Unsubscribe anonymous method in C#

我有一些面板在创建时被委派为可点击:

int z2 = z;
PicBx[z].Click += delegate { clicked(z2, null); };

如果程序需要它,我希望能够删除它。我尝试使用:

int z2 = z;
PicBx[z].Click -= delegate { clicked(z2, null); };

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

1 个答案:

答案 0 :(得分:10)

您无法取消订阅匿名委托,您需要继续引用委托

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

PicBx[z].Click += myClickDelegate;

...

PicBx[z].Click -= myClickDelegate;

或创建命名函数

希望这有帮助