我有一个Button
列表,我为每个按钮添加一个事件处理程序:
List<Button> buttons = new List<Button>();
for (int i = 0; i < 10; i++)
{
Button btn = new Button();
btn.Click = new RoutedEventHandler(OnbtnClick);
buttons.Add(btn);
}
然后我清除列表:
/* Have I to remove all events here (before cleaning the list), or not?
foreach (Button btn in buttons)
btn.Click -= new RoutedEventHandler(OnbtnClick);
*/
buttons.Clear();
清除列表时,将清除对处理程序的所有引用。一旦你的处理程序离开作用域(也就是说,当函数最终退出并且没有对象引用创建的处理程序时),垃圾收集器将开始删除所有相关内存(当然是按照自己的计划)。
所以不,你不需要手动删除处理程序。
检查此解决方案:如何从控件中删除所有事件处理程序
这是你所追求的,希望这个帮助。