如果您将Winform MouseDown事件设置为方法,则如何清空或重置事件。所以当它发射时没有方法可以调用。
以例如:
MouseDown += new System.Windows.Forms.MouseEventHandler(@SelectMouseDown);
并且您希望将MouseDown事件重置为空或nil或null。
我认为我被其他一些StackOverflow问题做了以下事情。
MouseDown -= System.Windows.Forms.MouseEventHandler(@SelectMouseDown);
它不起作用。
答案 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);