Vb6 动态添加控件的并行(regfree)问题

Vb6 动态添加控件的并行(regfree)问题,vb6,manifest,reg-free,Vb6,Manifest,Reg Free,我们将我们的vb6项目迁移到使用sidebyside(regfree)技术……但在表单的动态添加控件方面存在问题,如: Private WithEvents tmpCtl As VBControlExtender Private Sub UserControl_Initialize() Set tmpCtl = Controls.Add("Project2.UserControl1", "ctl") With tmpCtl Set .Container = Me .Visi

我们将我们的vb6项目迁移到使用sidebyside(regfree)技术……但在表单的动态添加控件方面存在问题,如:

Private WithEvents tmpCtl As VBControlExtender

Private Sub UserControl_Initialize()
Set tmpCtl = Controls.Add("Project2.UserControl1", "ctl")
  With tmpCtl
    Set .Container = Me
    .Visible = True
  End With
End Sub
当使用tmpCtl对象时,如:

tmpCtl.Properties
出现错误“对象不支持此属性或方法”

我发现人们也有同样的问题(),建议实现“直接用户控制”

有人知道如何在vb6代码中实现这一点吗?我们如何解决sxs和动态添加控件到表单的问题


能否为我们提供解决此问题的相同解决方案示例?

否,直接控件类型库方法适用于MS的第一方COMCTL,而不适用于刚编译的用户控件,这些控件是恢复CLSID/IID的移动目标。请尝试
tmpCtl.object.Properties
,或者更好:
Dim oCtl As UserControl1:Set oCtl=tmpCtl.object
,然后
oCtl.Properties
也应该可用。感谢您的回答,但我们有一个大型VB6项目,它很难更改使用VBControlExtender而不使用.object属性的所有位置。我的想法是创建一个tlb文件,其中包含所有引用控件和加载在程序层上的所有控件。你觉得这个主意怎么样?另一个大问题是,我们无法在regfree模式下调试vb6项目,因为在regfree模式下,我们可以看到错误的地方以及需要添加.object属性的地方。
tmpCtl.Properties
在许多级别上都是错误的。当您的用户控件位于单独的OCX项目中(或者在当前项目中,不记得是哪种方式)时,使用常规(非regfree)COM也会失败。不要认为在regfree COM中缺少一些简单的东西,这些东西会使当前代码在没有修改的情况下再次运行。您知道如何在regfree模式下调试vb6项目吗?我在program files(c:\program files(x86)\Microsoft Visual Studio\VB98)文件夹中添加了清单文件,但不起作用…@bojan调试是一个非常广泛的主题。也许你可以发布另一个更详细的问题。