2013-07-05 88 views
0

如果我有在VB6的一類,有一些事件如何在VB6中檢測事件處理程序是否已分配?

Public Event SomethingHappened 

,後來我想火該事件

RaiseEvent SomethingHappened 

這工作得很好,在我的形式託管類

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

但是,有沒有什麼辦法可以告訴代碼中引發事件,事件是否被賦予了一個處理程序? 因爲我想要做一些默認行爲,如果沒有。

我看到,在VB.NET中有一個自動的「SomethingHappenedEvent」變量聲明,但這似乎並沒有在VB6中工作。 我在Google上找不到任何提及,所以我懷疑這是不可能的,但是...

+0

如果我正確理解您的要求,WithEvents應該適合您。有關WithEvents的更多詳細信息,請查看MSDN – rags

+0

這些事件的工作原理是,我使用WithEvents來管理這個類。問題是,該代碼如何判斷表單是否處理事件 –

+0

只需聲明一個全局布爾變量並從事件內部對其進行修改即可。如果您想查看代碼是否處理了該事件,請檢查您的變量。 –

回答

1

正如我在評論中提到的,Microsoft常常在其控件和類中處理此事,方法是傳遞一個ByRef布爾「取消默認操作」參數到事件處理程序。

如果處理程序在返回前沒有設置Cancel = True存在,那麼組件採取默認操作。

這可以視爲基於既定用途的可行模式。可能會有其他選擇,但是當您想要提供默認操作的事件時,這看起來非常簡單且乾淨。

相關問題