zoukankan      html  css  js  c++  java
  • 看你知道不知道VB6的模块之间循环关系

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

    '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
  • 相关阅读:
    kali一些基础工具
    Yii2引入css和js文件
    My97DatePicker日期插件
    Yii2助手函数
    yii2相关前台组件
    yii2之DetailView小部件
    关于SQL_MODE的那些事
    Yii2 RBAC
    ORM介绍
    ASCII码
  • 原文地址:https://www.cnblogs.com/Duiker/p/379069.html
Copyright © 2011-2022 走看看