Сбросит ли методы настройки события старый метод или добавляет другой метод в свой список событий?

StackOverflow https://stackoverflow.com/questions/8314651

Вопрос

Я немного не смущается в том, чтобы установить события в .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-АКСОРС. В таком случае вы несете ответственность за правильное хранение обработчиков событий. Тем не менее, это вряд ли когда -либо необходимо сделать вручную.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top