Удаленное событие, но все еще стреляющее

У меня странная ошибка, когда запускается нежелательное событие. Я могу проследить в код и увидеть, что обработчик события "onRowLeave" удаляется с использованием синтаксиса -=, а затем изменяется следующая строка DataSource, что приводит к срабатыванию обработчика "OnRowLeave"!

Так что, кажется, удаление не работает.

Я могу сказать, что это не добавляется снова как-то, потому что у меня есть точка останова во всех местах, где она добавляется с помощью +=, и она не затрагивает их.

Я думаю, что, может быть, он добавляется дважды и удаляется только один раз... это будет причиной? Есть ли способ увидеть обработчики в отладчике?

2 ответа

->> Я думаю, что, может быть, он добавляется дважды и удаляется только один раз... это будет причиной?

Это правильно.

->> Есть ли способ увидеть обработчики в отладчике?

Я не думаю, что это возможно. Кроме того, если вы не знаете, сколько раз был добавлен обработчик событий, их снятие не является простой задачей. Я полагаю, что вы можете использовать отражение, чтобы достичь этого.

Вместо этого я бы порекомендовал вам изучить код и понять, где и почему у вас есть несколько регистраций событий, чтобы вы могли удалить их вручную, если это будет необходимо.

(Возможно, вы захотите отметить (как предложено nobugz), что OnRowLeave является методом DataGridView и не является событием. Этот метод не предоставляется пользователю, а вместо этого отвечает за возникновение события RowLeave, которое пользователь может перехватить. Я не совсем уверен, почему вы используете термин OnRowLeave)

Когда у меня возникают подобные проблемы с обработчиком событий, я обычно предоставляю свои собственные методы добавления / удаления событий и отслеживаю обработчики событий в своем собственном контейнере вместе с другими отладочными данными, если это кажется полезным. Это позволяет проверить коллекцию в отладчике, и дополнительные данные могут быть весьма полезны, если они связывают объект System.Diagnostics.StackTrace для каждого события, добавляемого таким образом.

Другие вопросы по тегам