如何在VB6中检测是否已分配事件处理程序?

时间:2013-07-05 05:20:03

标签: events vb6

如果我在VB6中有一个类,有一些事件

Public Event SomethingHappened

后来我想解雇那个事件

RaiseEvent SomethingHappened

这种方式很好,以我的形式托管课程

Public WithEvents TheObject as MyClass
...
Public Sub TheObject_SomethingHappened
...

但是,有没有办法告诉代码哪个事件引发事件,事件是否被分配了处理程序? 因为我想做一些默认行为。

我看到在VB.NET中声明了一个自动的“SomethingHappenedEvent”变量,但这似乎在VB6中不起作用。 我在Google上找不到这个,所以我怀疑它不可能,但是......

1 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,Microsoft经常通过将ByRef布尔“取消默认操作”参数传递给事件处理程序来在其控件和类中处理此问题。

如果处理程序在返回之前没有设置Cancel = True,则组件将采取默认操作。

这可以作为基于既定用途的可行模式。可能有其他选择,但是当您有想要提供默认操作的事件时,这似乎非常简单和干净。