我对在.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。在这种情况下,您负责正确存储活动处理程序。但是,这几乎没有必要手工做。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top