2013-02-04 49 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的事件。