将方法设置为事件重置旧方法还是在其事件列表中添加其他方法?
-
25-10-2019 - |
题
我对在.NET中设置事件并不感到困惑。
我的方法设置为Mousedown,如下所示。
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;
每次都触发鼠标UP时,上面的代码被称为。由于代码只是将Mousedown事件设置为一种方法,因此它是否会重置已经设置或保留它的旧方法,以及其事件列表中的另一种事件方法...
解决方案
我 可以 但是,请回答“这取决于”,如果事件是根据.NET指南设计的,以您的方式添加事件,则意味着将其添加到事件处理程序列表中 不是 卸下旧处理程序。对于所有.NET自己的事件,当然是正确的,几乎对于其他设计精良的活动应该是正确的。
如果要从列表中删除事件,请使用 -=
操作员。
如果您自己定义事件,则可以通过覆盖此行为来覆盖此行为 add
- 接管者或 remove
-Accessor。在这种情况下,您负责正确存储活动处理程序。但是,这几乎没有必要手工做。
不隶属于 StackOverflow