2013-02-04 48 views
0

這是我的問題。我有VB6類FirstClass。在SecondClass我創建的FirstClass實例:在VB6中處理事件:初始化

WithEvents fClass as FirstClass 

... 

Set fClass = New FirstClass 

確定。同樣在SecondClass我有一個事件Initialize - 這是FirstClass的對象的一些事件(據我所知)。但是當我在這個事件中粘貼斷點時,它不會觸發。那麼你能否向我解釋爲什麼我不能參加這個活動,以及VB6中的事件處理如何工作。
請提問,如果我的英文不好理解我的想法

更新:

下面是從的Firstclass屬性:

私有財產令IRPCAppMode_Application(右軸爲對象)

Const METHOD_NAME As String = "IRPCAppMode_Application" 'DO NOT TRANSLATE 
On Error GoTo ErrorHandler 
Set mApp = RHS 
Set m_objRPCProject = mApp.Project 
Set m_objDataSet = m_objRPCProject.CurrentDataSet 

RaiseEvent Initialize 

...

我知道mApp對象只在這行代碼中設置, 就這樣。我無法理解的是SecondClass中的初始化事件如何上升以及我們如何在課堂外設置私有財產。初始化的二等呼喚:

Private Sub m_objTestMode_Initialize() 
    Const METHOD_NAME As String = "m_objTestMode_Initialize" 'DO NOT TRANSLATE 
    On Error GoTo ErrorHandler 
    Dim lLoop As Long 
    Set mRPCProject = m_objTestMode.Project 
    SetupAutoSaveTimer 
    SSTab1.Tab = 0 
    SSTab2.Tab = 0 
    Set m_objToolManager = m_objTestMode.mApp.ToolManager 
    Set g_objMonDrives = New clsMonDrives 
    Set g_objTrendMonDrives = New clsTrendDrives 

....

+1

你可以添加更多的代碼 - 特別是你必須處理事件的方法嗎? –

+0

本文給出了VB6 Event系統的一個很好的描述:http://www.developer.com/net/vb/article.php/1430631/Declaring-and-Raising-Events-in-Visual-Basic-6.htm –

+0

你知道,這對我來說很難)但我試着解釋。 FirstClass有一個私有屬性讓IRPCAppMode_Application(RHS As Object)。在這個屬性中,我有一個「RaiseEvent Initialize」行。所以我猜如果我在SecondClass中創建FirstClass的實例並且在SecondClass中有Initialize的處理程序,它會觸發?我對嗎? – Viaches

回答

0

的初始化事件已經是你們班有本地的,所以如果你試圖創建自己會被忽略。只需拿起你的代碼(擺脫所有的自定義事件代碼)並將其放入現有的Initialize事件中即可。

無論何時創建類的新實例,都會觸發Initialize事件。因此,如果使用SecondClass創建FirstClass的實例,則需要使用Initialize事件進入FirstClass。這樣,當你創建FirstClass的實例時它會被解僱。因此,不,SecondClass的Class_Initialize事件不是FirstClass的事件,而是SecondClass的事件。