看你知道不知道-VB6的模块之间循环关系

今天兄弟在调试程序的时候发现了一个有意思的现象,系统提示"模块之间循环关系",下面看看示例代码:

None.gif'cD
None.gif
Option Explicit
None.gif
None.gif
Public Event ClickEvent()
None.gif
None.gif
Public WithEvents c As cE
None.gif
None.gif
Public Sub Click()
None.gif    RaiseEvent ClickEvent
None.gif
End Sub
None.gif
None.gif
Private Sub c_ClickEvent()
None.gif    
'
None.gif
End Sub
None.gif
None.gif
'cE
None.gif
Option Explicit
None.gif
None.gif
Public Event ClickEvent()
None.gif
None.gif
Public WithEvents c As cD
None.gif
None.gif
Public Sub Click()
None.gif    RaiseEvent ClickEvent
None.gif
End Sub
None.gif
None.gif
Private Sub c_ClickEvent()
None.gif    
'
None.gif
End Sub

其实类cD 和cE的使用没有任何的错误,关键就是VB6本身的问题,就是两个带事件的类,可以相互引用,但是不能使用事件,如果去掉任何一个c_ClickEvent系统就没问题了.

后来我们采用了循环代理的方式,增加一个代理做为中介,系统依然这样提示.

最后的解决办法只能增机一个容器类,通过容器类来协调2个类的工作了,真是不优美,解决办法如下:
None.gif'cA
None.gif
Option Explicit
None.gif
None.gif
Public Event ClickEvent()
None.gif
None.gif
Public Sub Click()
None.gif    RaiseEvent ClickEvent
None.gif
End Sub
None.gif
'cB
None.gif
Option Explicit
None.gif
None.gif
Public Event ClickEvent()
None.gif
None.gif
Public Sub Click()
None.gif    RaiseEvent ClickEvent
None.gif
End Sub
None.gif
'cContainer
None.gif
Option Explicit
None.gif
None.gif
Public WithEvents a As cA
None.gif
Public WithEvents b As cB
None.gif
None.gif
Private Sub a_ClickEvent()
None.gif    b.Click
None.gif
End Sub
None.gif
None.gif
Private Sub b_ClickEvent()
None.gif    a.Click
None.gif
End Sub
None.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值