我对在.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;
每次触发mouseup时都会调用上面的代码。因为代码只是将MouseDown事件设置为方法,它是否会重置已经设置的旧方法或保留它,并且只在其事件列表中重新设置另一个事件方法...
答案 0 :(得分:1)
我可以回答“它取决于”,但是,如果事件是根据.NET指南设计的,那么按照您的方式添加事件,意味着将其添加到事件处理程序列表中< em> not 删除旧的处理程序。这对于所有.NET自己的事件来说都是如此,对于任何其他精心设计的事件都应如此。
如果要从列表中删除事件,请使用-=
运算符。
如果您自己定义事件,则可以通过覆盖add
- 访问者或remove
- 访问者来覆盖此行为。在这种情况下,您负责正确存储事件处理程序。但是,这几乎不需要手工完成。