0

我创建了一个这样的事件:

Private Handler1 As New EventHandler(AddressOf resize_page)

然后在我的子中我这样添加:

  AddHandler Main.Resize, Handler1

然后我有一个处理它的子

Private Sub resize_page(){
 ' do something
}

当我调整表单大小时,我的子程序永远不会被调用。其中的动作永远不会被执行。我什至在其中放了一个 MessageBox 作为第一行,我的消息永远不会弹出,所以我知道它没有被调用。

为什么不开火?

4

2 回答 2

1

结果证明这是一个奇怪的事件组合,我仍然无法解释或弄清楚,但我最终通过删除所有内容并向后追踪它来找到它的底部。

我在这个应用程序中有几个模块,每个模块都会打开一个面板,占据表单的整个宽度和高度(只有一个表单),所以它就像一个“页面”。当用户完成页面后,他会点击一个关闭按钮,该按钮会处理该模块中的所有内容。所以他实际上是在关闭页面并转到另一个页面。由于每一页都占据了表单的整个宽度和高度,我希望它在表单大小发生变化时扩展以填充表单。所以每个模块都有一个事件监听器,它监听“主”表单来调整大小。

这就是发生的事情:

我在第一页创建了一个监听器,这样它就可以自行调整大小(效果很好)

我在第二页上创建了一个侦听器,以便它可以自行调整大小,但我不小心调用了此页面上第一页的侦听器。所以它有两个监听器,它们没有抛出错误,因为第一页的 resize sub 错误地被公开而不是私有。

第 3 页的事件侦听器是一个不起作用的事件侦听器,尽管它的创建方式与第 1 页的事件侦听器一样。

向后追溯后,我发现第 2 页上的侦听器正在调用第 1 页上的 sub 并将其删除。一旦我删除它,第 3 页上的监听器就会开始正常工作。我仍然不知道为什么,因为即使第一页处理了它的元素,它的调整大小子,它是公开的,应该仍然可以从第二页访问。当页面被处理时,我删除了事件侦听器以及其他所有内容。但是,第 2 页上有一个链接打开了第 3 页而没有处理第 2 页,这以某种方式阻止了第 3 页的侦听器被解雇。

无论如何,它就这么简单,现在它按预期工作,所以我会继续。

谢谢(你的)信息。

于 2014-06-09T14:18:56.007 回答
0

主要指的是什么?

您将处理程序添加到错误的东西是我的猜测。您也想将处理程序添加到您的表单中。

AddHandler Me.Resize, Handler1

或许

 AddHandler [Yourforminstance].Resize, Handler1

另外,您似乎混淆了语言?还是只有我?哈哈

应该

    Private Sub resize_page()
      'Code here
    End Sub
于 2014-06-06T20:22:44.763 回答