Сбросит ли методы настройки события старый метод или добавляет другой метод в свой список событий?
-
25-10-2019 - |
Вопрос
Я немного не смущается в том, чтобы установить события в .net.
У меня есть методы, которые настроены на Муседаун следующим образом.
if theTool = TMakerTool.tmtSelect then
begin
MouseDown += new System.Windows.Forms.MouseEventHandler(@SelectMouseDown);
Cursor := Cursors.Arrow;
end
else
begin
MouseDown += new System.Windows.Forms.MouseEventHandler(@Maker_MouseDown);
Cursor := Cursors.Cross;
end;
Приведенный выше код называется каждый раз, когда увольняется MouseUp. Поскольку код просто устанавливает событие Mousedown для метода, сбросит ли он старый метод, который уже был установлен или сохранить его, и просто еще один метод событий в списке событий ...
Решение
я мог Ответ «это зависит», однако, если события разработаны в соответствии с рекомендациями .NET, добавляя событие так, как вы делаете, означает добавление его в список обработчиков событий и нет Удалите старые обработчики. Это, безусловно, верно для всех собственных событий .net и должно быть правдой практически для любого другого хорошо продуманного события.
Если вы хотите удалить событие из списка, используйте -=
оператор.
Если вы определите событие самостоятельно, вы можете переопределить это поведение, переопределив add
-АКСОРСОР ИЛИ remove
-АКСОРС. В таком случае вы несете ответственность за правильное хранение обработчиков событий. Тем не менее, это вряд ли когда -либо необходимо сделать вручную.