您的位置:首页 > 编程语言 > VB

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

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

'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

其实类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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐