удаленное событие, но все еще стреляющее - PullRequest
1 голос
/ 25 марта 2009

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

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

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

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

Ответы [ 2 ]

1 голос
/ 25 марта 2009

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

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

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

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

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

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

0 голосов
/ 25 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...