Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 事件处理程序正在以某种方式重新订阅_C#_.net_Vb.net - Fatal编程技术网

C# 事件处理程序正在以某种方式重新订阅

C# 事件处理程序正在以某种方式重新订阅,c#,.net,vb.net,C#,.net,Vb.net,我有一个奇怪的问题,让我解释一下: 我有一个从基类派生的形式。创建表单时,还会生成一个处理事件管理、绑定等的行为类 我创建了一个表单instanceFormFoo。创建关联的行为类时,其中有一个签名为:grid_EventA….的方法。。。。处理grid.eventA 我想在FormFoo中处理EventA,而不是行为类,因此我删除了在行为类中生成的处理程序,并添加了一个指向FormFoo中方法的处理程序。这一切都很好用。事件仅在FormFoo中正确处理 接下来,我通过在FormFoo中单击按钮

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

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

我创建了一个表单instanceFormFoo。创建关联的行为类时,其中有一个签名为:grid_EventA….的方法。。。。处理grid.eventA

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

接下来,我通过在FormFoo中单击按钮来实例化一个模式FormBar。然后关闭FormBar。现在我们有一个问题

当eventA触发时,它现在从FormFoo中的事件处理程序和与FormFoobad关联的行为类中处理

是行为类grid_EventA…中的事件处理程序。。。。处理grid.eventA在窗体再次获得焦点时是否重新订阅?我不明白那个活动是怎么被重新订阅的

我想出来了

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

网格事件。。。。处理grid.eventA

然后,我在BehaviorClass初始化期间添加了处理程序,使用:

AddHandler grid.EventA,grid_EventA的地址


一旦我这样做了,问题就消失了。当您使用MethodName时,似乎。。处理在控件返回焦点时重置事件绑定。VB暗箱操作。

更少的文本和更多的代码示例将使回答更容易。请尝试重写事件添加和删除方法,并使用调试器查看子描述/取消描述的数量和时间是否准确考虑在行为类中引发异常,以便在该点上查看堆栈跟踪。