如何让事件再次变空?

时间:2011-11-29 19:06:20

标签: .net winforms events methods delphi-prism

如果您将Winform MouseDown事件设置为方法,则如何清空或重置事件。所以当它发射时没有方法可以调用。

以例如:

MouseDown += new System.Windows.Forms.MouseEventHandler(@SelectMouseDown);

并且您希望将MouseDown事件重置为空或nil或null。

我认为我被其他一些StackOverflow问题做了以下事情。

MouseDown -= System.Windows.Forms.MouseEventHandler(@SelectMouseDown);

它不起作用。

2 个答案:

答案 0 :(得分:2)

在这种情况下,您正在使用另一种类型所拥有的事件。无法完全清除处理程序列表。您只能删除您有权访问等效委托的处理程序。通常,这是您添加的一组处理程序。

您展示的代码将删除MouseDown SelectMouseDown上的处理程序。但它不会清除任何其他人。

如果您拥有该事件,则删除所有处理程序就像将事件设置为null一样简单。

private event EventHandler _mouseDownEvent;
public event EventHandler MouseDown {
  add { _mouseDownEvent += value; }
  remove { _mouseDownEvent -= value; }
}

void ClearMouseDown() {
  _mouseDownEvent = null;
}

答案 1 :(得分:2)

没有做任何测试,但这应该做的工作。添加“新”到行的开头

MouseDown -= new System.Windows.Forms.MouseEventHandler(@SelectMouseDown);