事件处理程序以某种方式重新订阅

时间:2011-05-19 18:11:42

标签: c# .net vb.net

我有一个奇怪的问题,让我解释一下:

我有一个派生自基类的表单。创建表单时,还会生成一个处理事件管理,绑定等的行为类...

我创建了一个表单实例(FormFoo)。当创建关联的行为类时,它有一个方法,其签名为:grid_EventA(....)处理grid.eventA

我想在FormFoo中处理EventA而不是行为类,所以我删除了行为类中生成的处理程序,并添加了一个指向FormFoo中方法的处理程序。这一切都只是很好的。该事件仅在FormFoo中正确处理。

接下来,我通过FormFoo中的按钮单击实例化一个模态表单(FormBar)。然后我关闭FormBar。现在我们遇到了问题。

当eventA触发时,它现在从FormFoo中的事件处理程序和与表单foo(坏)相关联的行为类中处理。

当表单再次获得焦点时,行为类(grid_EventA(....)处理grid.eventA)中的事件处理程序是否重新订阅?我不明白该事件是如何被重新订阅的。


我想通了

我从方法签名中删除了Handles grid.EventA:

grid_EventA(....)处理grid.eventA

然后我在使用:

初始化BehaviorClass期间添加了处理程序

AddHandler grid.EventA,AddressOf grid_EventA

一旦我这样做,问题就消失了。看来当你使用MethodName(..)处理时,当控件重新聚焦时,事件绑定会被重置。 VB这是引人入胜的。

0 个答案:

没有答案
相关问题