如果我在VB6中有一个类,有一些事件
Public Event SomethingHappened
后来我想解雇那个事件
RaiseEvent SomethingHappened
这种方式很好,以我的形式托管课程
Public WithEvents TheObject as MyClass
...
Public Sub TheObject_SomethingHappened
...
但是,有没有办法告诉代码哪个事件引发事件,事件是否被分配了处理程序? 因为我想做一些默认行为。
我看到在VB.NET中声明了一个自动的“SomethingHappenedEvent”变量,但这似乎在VB6中不起作用。 我在Google上找不到这个,所以我怀疑它不可能,但是......
答案 0 :(得分:1)
正如我在评论中提到的,Microsoft经常通过将ByRef布尔“取消默认操作”参数传递给事件处理程序来在其控件和类中处理此问题。
如果处理程序在返回之前没有设置Cancel = True,则组件将采取默认操作。
这可以作为基于既定用途的可行模式。可能有其他选择,但是当您有想要提供默认操作的事件时,这似乎非常简单和干净。