В этом случае вы используете событие, которое принадлежит другому типу. Нет никакого способа полностью очистить список обработчиков. Вы можете удалить только те обработчики, к которым у вас есть доступ к эквивалентному делегату. Обычно это набор обработчиков, который вы добавили.
Код, который вы показали, удалит обработчик на MouseDown
для SelectMouseDown
. Но это не очистит других.
Если вы являетесь владельцем события, тогда удаление всех обработчиков так же просто, как установка события в null.
private event EventHandler _mouseDownEvent;
public event EventHandler MouseDown {
add { _mouseDownEvent += value; }
remove { _mouseDownEvent -= value; }
}
void ClearMouseDown() {
_mouseDownEvent = null;
}