0

这是我的问题。我有 VB6 类FirstClass。在SecondClass我创建的实例中FirstClass

WithEvents fClass as FirstClass

...

Set fClass = New FirstClass

好的。同样在SecondClass我有一个事件Initialize- 这是FirstClass' 对象的一些事件(据我所知)。但是当我在这个事件中粘贴断点时,它不会触发。所以你能解释一下为什么我不能参加这个活动,以及事件处理在 VB6 中是如何工作的。
如果我的英语不能很好地理解我的想法,请提出问题

更新:

这是 FirstClass 的财产:

Private Property Let IRPCAppMode_Application(RHS As Object)

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对象只在这行代码中设置,仅此而已。我无法理解的是 Initialize Event 如何在 SecondClass 中上升,以及我们如何在课堂之外设置私有财产。在 SecondClass 中调用 Initialize:

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

……

4

1 回答 1

0

Initialize 事件已经在您的类中,因此如果您尝试创建自己的事件,它将被忽略。只需将您的代码(摆脱所有自定义事件代码)放入现有的 Initialize 事件中,您就可以了。

每当您创建类的新实例时,都会触发 Initialize 事件。因此,如果您使用 SecondClass 创建 FirstClass 的实例,您需要将 Initialize 事件放入 FirstClass。这样,当您创建 FirstClass 实例时,它将被触发。所以不,SecondClass 的 Class_Initialize 事件不是 FirstClass 的事件,而是 SecondClass 的事件。

于 2013-02-04T21:30:29.680 回答