1

我有一个使用 CTL 用户控件的旧 VB6 项目。我可以在工具箱上看到用户控件。

如果我在项目中创建一个新表单,并尝试添加用户控件,则会失败,因为“加载 DLL 时出错”并且无法添加控件。

但是如果我创建一个新项目,我可以将用户控件添加到项目中,然后在新表单中使用它没有问题。

第一个项目有什么问题,我不能在其表单中使用用户控件?

同样,打开已使用用户控件的项目的窗体,该控件无法识别。似乎与原始项目上用户控件的错误路径/引用有关。

我试图再次添加用户控件,但它告诉我已经存在同名的用户控件。

如果我尝试退出用户控件以再次加载它,我将无法退出它,因为它正在项目中使用。我能做些什么?

谢谢你的帮助。

4

2 回答 2

2

在文本编辑器中打开您的 CTL 文件(记事本就可以了)。

在顶部,它可能具有类似于以下内容的行:

VERSION 5.00
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFlxGrd.ocx"

可能有一行或多Object=行。

这些行中至少有一个文件可能丢失或未在计算机上注册。

于 2018-10-31T11:51:15.947 回答
0

不要问我为什么,但成功的唯一方法就是从头开始。我从一台安装了 Visual Studio SP6 的干净的 Windows XP 笔记本电脑开始。

尝试加载和编译项目时,出现了同样的错误。如果我尝试绘制我的用户控件的新实例,则相同:加载 DLL 时出错 如果我尝试打开包含我的用户控件实例的表单,则相同:在表单中无法识别控件(空白区域)。

所以,我开始了一个新的空 ActiveX DLL 项目。逐步添加所有对象,我可以加载所有对象(有一些小问题),但最后我可以编译项目。

添加对象的顺序很重要:引用和组件、用户控件、模块和类、设计器,最后是表单。

我试图在每个步骤上进行编译以找出问题的原因,并了解下一个必须添加的对象。但不明白为什么它现在有效。不管怎么说,还是要谢谢你!

编辑 2018-11-07:

我在初始项目中发现了一种变通方法,可以毫无问题地使用 CTL 用户控件,并且可以在没有任何错误消息的情况下编译该项目。我想在这里分享它以帮助任何有类似问题的人。

我不知道为什么,也许任何人都可以给出解释,但是如果我打开项目,然后打开名为frmDate的设计器(见图),从那一刻起我就可以编译项目,并使用用户控件任何形式。到底是怎么回事??

在此处输入图像描述

于 2018-11-05T11:46:53.973 回答