`

看你知道不知道-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
分享到:
评论

相关推荐

    厦门大学-VB课后习题答案.pdf

    - VB程序的基本控制结构包括顺序结构、选择结构(如If语句)和循环结构。 - VB中的赋值语句、数据输入语句和数据输出语句用于处理数据。 - `InputBox`和`MsgBox`是VB中的常用函数,分别用于数据输入和信息提示。 ...

    Access-Password-Recovery-In-VB6.zip_MS Access_in_vb6

    这个"Access-Password-Recovery-In-VB6.zip"压缩包包含了一个名为"prjacpsrc"的VB6项目,以及相关的表单(frmpassrec.frm和frmpassrec.frx)和工程文件(prjacpsrc.vbp和prjacpsrc.vbw),它们共同构成了一个简单的...

    模仿NOKIA的贪吃蛇源代码 - VB6

    模块化编程是VB6的一大特点,它使得代码组织有序,易于管理和维护。 1. `modAlphaBlend.bas`:这个模块可能包含了透明度处理的代码,用于游戏界面的平滑过渡和视觉效果。在VB6中,可以使用GDI+库来实现Alpha ...

    VB中在模块中定义全局函数,在窗体中调用函数的实例——利润表.zip

    - **模块**:在VB中,模块(Module)用于创建不依赖于任何特定窗体的代码。在这里定义的函数和变量可以在整个工程中被访问,因为它们具有全局作用域。 - **全局函数**:全局函数是在模块级别定义的函数,可以在...

    Genesis-VB文件导出源码

    6. **模块与类**:VB6.0支持标准模块(Standard Module)和类模块(Class Module),前者用于存储全局变量和通用过程,后者用于创建自定义对象。源码可能包含这些模块的实现,展示了面向对象编程的基本概念。 7. **...

    计算机专业毕业设计源码-VB+Access酒店客房管理系统(系统+开题报告+摘要+任务书)-基于VB-IT毕设.zip

    该压缩包文件“计算机专业毕业设计源码-VB+Access酒店客房管理系统(系统+开题报告+摘要+任务书)-基于VB-IT毕设.zip”包含了一整套基于Visual Basic (VB) 和 Microsoft Access 开发的酒店客房管理系统的源代码、开题...

    VB MD5类模块

    ### VB MD5类模块知识点详解 #### 一、概述 在信息安全领域,数据加密技术扮演着至关重要的角色。其中,消息摘要算法(如MD5)是应用最为广泛的一种加密方式。Visual Basic (VB) 作为一种经典的编程语言,在实现...

    《算法与程序设计》模块练习题-VB语言-客观性试题-答案.doc

    算法与程序设计模块练习题VB语言客观性试题答案 《算法与程序设计》模块练习题VB语言客观性试题答案是VB语言编程教学的重要组成部分。该文档提供了VB语言编程的客观性试题答案,涵盖了算法和程序设计的基本概念、...

    VB延时模块

    总结,VB延时模块的核心在于控制程序执行的节奏,这可以通过多种方式实现,包括但不限于`Sleep`函数、`Timer`控件、多线程技术等。选择哪种方法取决于具体的应用场景和需求。理解并熟练掌握这些延时技术,对于编写...

    VB6 建立拨号上网的连接模块

    在VB6(Visual Basic 6)环境中,建立拨号上网的连接模块是一项常见的任务,尤其在早期互联网接入方式主要是通过电话线拨号的时候。拨号连接通常涉及到Windows API调用和RAS(Remote Access Service)功能,使得VB6...

    计算机专业毕业设计源码-vb+access职工工资管理信息系统(系统+开题+任务书)-基于VB-IT毕设.zip

    - VB的控制结构包括条件语句(If...Then...Else)、循环语句(For...Next、Do...Loop)等,用于编写逻辑流程。 2. **Access数据库管理**: - Access是Microsoft Office套件中的关系型数据库管理系统,使用Jet...

    102349-1837231-jeu-pacman-en-vb-net_vb.net_源码

    1. **VB.NET基础语法**:包括变量声明、控制流(条件语句、循环)、函数、类和对象等。 2. **图形用户界面(GUI)设计**:使用VB.NET的Windows Forms或WPF库创建游戏界面,可能涉及控件布局、事件处理和动画效果。 ...

    Combox控件Api操作模块,Combox快速搜索某行是否包含字符串-vb6源码

    对比普通combo1.list(x),循环查找方法,速度提高了22倍。Combox控件Api操作模块正在设计中(常数写好了,大家可以自行扩展) 用了微秒级的CPU计时器API:QueryPerformanceCounter,大家可以对自已的函数进行高精度...

    VS2008--VB编程实例

    ### VS2008—VB编程实例(入门教程) #### VB(Visual Basic)的发展 自1991年微软公司推出了Visual Basic 1.0以来,这一编程语言迅速成为了Windows平台上进行应用程序开发的重要工具之一。最初的版本是为16位...

    多线程-VB.net开发实例_vb.net多线程_

    - `Module1.vb`:VB.NET的模块文件,可能包含了多线程的代码实现。 - `AssemblyInfo.vb`:程序集信息文件,定义了版本、版权等元数据。 - `多线程.vbproj`:项目文件,描述了项目的构建设置和结构。 - `Backup`...

    C#VB代码转换器

    例如,C#中的`foreach`循环在VB.NET中对应的可能是`For Each`循环;C#中的`async/await`关键字在VB.NET中则转换为`Async/Await`。 使用这个工具时,用户只需将C#或VB.NET的代码粘贴到相应的输入框,点击转换按钮,...

    VB6.0代码转换到易语言

    - **功能模块转换**:可以先将VB6.0的各个功能模块独立出来,逐一转换,确保每个模块在易语言中正常工作。 - **测试与调试**:转换后的代码需要进行详尽的测试,确保功能与原VB6.0代码一致。 5. **转换注意事项**...

    成都理工大学-VB-试题库(含答案).pdf

    6. 在VB中,数学表达式3≤x的逻辑表达式写法应为“3”,这是因为VB使用And来表示逻辑“与”。 7. 在VB的“通用声明”中使用Dim语句定义的变量,其有效范围是在该窗体的所有过程中均有效,而不是只在“通用声明”中...

    VB6批量动态控件数组事件响应

    在VB6(Visual Basic 6)编程环境中,批量动态创建控件并处理它们的事件响应是一项常见的需求。这种技术能够使程序更具灵活性和扩展性,特别是在处理大量相似数据或者需要用户自定义界面的情况下。本话题将深入探讨...

    计算机应用基础-VB完全教程

    6. **VB与数据库**:VB集成了ADO(ActiveX Data Objects),使得连接和操作数据库变得简单。开发者可以通过ODBC(Open Database Connectivity)或OLE DB与各种数据库系统(如SQL Server、Access等)进行交互。 7. *...

Global site tag (gtag.js) - Google Analytics