【问题标题】:OCX control: Sub New() is not accessible in this context because it is 'Private'OCX 控件:在此上下文中无法访问 Sub New(),因为它是“私有”的
【发布时间】:2019-03-13 15:24:14
【问题描述】:

最近我一直在尝试创建一个activeX 控件并在一些vb.net 代码中使用它。经过一番努力,我在 vb6 中创建了我的控件并生成了 ocx 文件。我一直在尝试使用它,如 microsoft docs here 中所示,但无济于事。 开:

myActiveX = New MyActiveXComponent.MyClass()

我不断得到

MyActiveXComponent.MyClass.Private Sub New() 在 这个上下文,因为它是“私人的”

我可以将它导入工具箱并以这种方式使用,但我不希望这样做,我使用的是 Visual Studio 2005。此外,我有一个 ocx,令我惊讶的是我可以同时使用两种方式(不是我的),所以我怀疑有什么问题和我的,但我不知道是什么。

【问题讨论】:

  • 如果类名为MyClass,您似乎正在创建一个实例。这是您在 ocx 中定义的类吗?
  • @tcarvin 是的,在这种情况下尝试实例化用户控件 MyClass 包含在 ocx 中,您可以在此处找到源代码 support.microsoft.com/en-us/help/315847/…
  • 您的Sub New 是私人的吗?也许需要Public
  • @ChrisDunaway 我根本无法在 vb6 中编写 sub new,据我所知 New 应该在 interop 生成的包装器内,它正在查看对象浏览器,但它继承自 System.对象,在其他工作 ocx 中它是类的成员,几乎就像它是类模块一样。

标签: vb.net vb6 activex com-interop vb6-migration


【解决方案1】:

你正在混合类和控件。但无论如何,如果您希望您的课程可以公开创建,您需要设置 Instancing,我建议使用 MultiUse。

【讨论】:

  • Classes 在 OCX 项目中默认为PublicNotCreatable
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多