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

看你知道不知道-VB6的模块之间循环关系'cD
看你知道不知道-VB6的模块之间循环关系
Option Explicit
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Public Event ClickEvent()
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Public WithEvents c As cE
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Public Sub Click()
看你知道不知道-VB6的模块之间循环关系    RaiseEvent ClickEvent
看你知道不知道-VB6的模块之间循环关系
End Sub
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Private Sub c_ClickEvent()
看你知道不知道-VB6的模块之间循环关系    
'
看你知道不知道-VB6的模块之间循环关系
End Sub
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
'cE
看你知道不知道-VB6的模块之间循环关系
Option Explicit
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Public Event ClickEvent()
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Public WithEvents c As cD
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Public Sub Click()
看你知道不知道-VB6的模块之间循环关系    RaiseEvent ClickEvent
看你知道不知道-VB6的模块之间循环关系
End Sub
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Private Sub c_ClickEvent()
看你知道不知道-VB6的模块之间循环关系    
'
看你知道不知道-VB6的模块之间循环关系
End Sub

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

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

最后的解决办法只能增机一个容器类,通过容器类来协调2个类的工作了,真是不优美,解决办法如下:
看你知道不知道-VB6的模块之间循环关系'cA
看你知道不知道-VB6的模块之间循环关系
Option Explicit
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Public Event ClickEvent()
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Public Sub Click()
看你知道不知道-VB6的模块之间循环关系    RaiseEvent ClickEvent
看你知道不知道-VB6的模块之间循环关系
End Sub
看你知道不知道-VB6的模块之间循环关系
'cB
看你知道不知道-VB6的模块之间循环关系
Option Explicit
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Public Event ClickEvent()
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Public Sub Click()
看你知道不知道-VB6的模块之间循环关系    RaiseEvent ClickEvent
看你知道不知道-VB6的模块之间循环关系
End Sub
看你知道不知道-VB6的模块之间循环关系
'cContainer
看你知道不知道-VB6的模块之间循环关系
Option Explicit
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Public WithEvents a As cA
看你知道不知道-VB6的模块之间循环关系
Public WithEvents b As cB
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Private Sub a_ClickEvent()
看你知道不知道-VB6的模块之间循环关系    b.Click
看你知道不知道-VB6的模块之间循环关系
End Sub
看你知道不知道-VB6的模块之间循环关系
看你知道不知道-VB6的模块之间循环关系
Private Sub b_ClickEvent()
看你知道不知道-VB6的模块之间循环关系    a.Click
看你知道不知道-VB6的模块之间循环关系
End Sub
看你知道不知道-VB6的模块之间循环关系

相关文章:

  • 2022-12-23
  • 2021-12-02
  • 2021-04-22
  • 2021-05-08
  • 2022-02-02
  • 2021-07-12
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-08
  • 2021-07-24
  • 2021-09-27
  • 2021-12-04
  • 2021-05-19
  • 2021-12-07
  • 2022-12-23
相关资源
相似解决方案