'cD
Option Explicit
Public Event ClickEvent()
Public WithEvents c As cE
Public Sub Click()
RaiseEvent ClickEvent
End Sub
Private Sub c_ClickEvent()
'
End Sub
'cE
Option Explicit
Public Event ClickEvent()
Public WithEvents c As cD
Public Sub Click()
RaiseEvent ClickEvent
End Sub
Private Sub c_ClickEvent()
'
End Sub
Option Explicit
Public Event ClickEvent()
Public WithEvents c As cE
Public Sub Click()
RaiseEvent ClickEvent
End Sub
Private Sub c_ClickEvent()
'
End Sub
'cE
Option Explicit
Public Event ClickEvent()
Public WithEvents c As cD
Public Sub Click()
RaiseEvent ClickEvent
End Sub
Private Sub c_ClickEvent()
'
End Sub
其实类cD 和cE的使用没有任何的错误,关键就是VB6本身的问题,就是两个带事件的类,可以相互引用,但是不能使用事件,如果去掉任何一个c_ClickEvent系统就没问题了.
后来我们采用了循环代理的方式,增加一个代理做为中介,系统依然这样提示.
最后的解决办法只能增机一个容器类,通过容器类来协调2个类的工作了,真是不优美,解决办法如下:
'cA
Option Explicit
Public Event ClickEvent()
Public Sub Click()
RaiseEvent ClickEvent
End Sub
'cB
Option Explicit
Public Event ClickEvent()
Public Sub Click()
RaiseEvent ClickEvent
End Sub
'cContainer
Option Explicit
Public WithEvents a As cA
Public WithEvents b As cB
Private Sub a_ClickEvent()
b.Click
End Sub
Private Sub b_ClickEvent()
a.Click
End Sub
Option Explicit
Public Event ClickEvent()
Public Sub Click()
RaiseEvent ClickEvent
End Sub
'cB
Option Explicit
Public Event ClickEvent()
Public Sub Click()
RaiseEvent ClickEvent
End Sub
'cContainer
Option Explicit
Public WithEvents a As cA
Public WithEvents b As cB
Private Sub a_ClickEvent()
b.Click
End Sub
Private Sub b_ClickEvent()
a.Click
End Sub