0

如果我有 VB6 的课程,有一些事件

Public Event SomethingHappened

然后我想触发那个事件

RaiseEvent SomethingHappened

这工作正常,在我主持课程的形式中

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

但是,有没有办法在引发事件的代码中告诉事件是否已分配处理程序?因为如果没有,我想做一些默认行为。

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

4

1 回答 1

1

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

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

这可以被视为基于既定用途的可行模式。可能有替代方案,但是当您有要提供默认操作的事件时,这似乎非常简单且易于实现。

于 2013-07-05T12:25:12.900 回答