将数组列表从vb6传递到vb.net对象

阿内尔·霍奇奇(AnelHodžić)

假设在vb6中,我有一个看起来像这样的数组列表:

 Public Type ArrayList
   str1 As String
   str2 As String
   str3 As String
 End Type

Dim dataList() As ArrayList

dataList(0).str1 = "String 1"

那就是我填写的vb6对象。现在,我想将其传递给我的vb.net对象。

我在vb.net定义了一个名为 Public Property WarrantyDetails As ArrayList ...

但是当我引用我的对象时,它会弹出错误:

错误说明

将数据从vb6对象传递到.net对象的最简单方法是什么?除了多维数组之外,还有其他什么吗?

锡锰

在此处输入图片说明

“在公共对象模块中定义的用户定义类型”是指VB6类模块,类似于Vb.Net类定义VB.Net用户类型的方式。我没有安装VB6,但是使用其表亲语言VBA,可以通过设置类的“ Instancing”属性来公开该类。下面介绍的所有代码均已使用VBA进行了测试,因此也应在VB6中运行。

不用声明现有的UDT,而是声明VB6类模块。

' clsDemo
Option Explicit

Private str1_ As String
Private str2_ As String
Private str3_ As String

Public Property Get str1() As String
   str1 = str1_
End Property

Public Property Let str1(var As String)
   str1_ = var
End Property

Public Property Get str2() As String
   str2 = str2_
End Property

Public Property Let str2(var As String)
   str2_ = var
End Property

Public Property Get str3() As String
   str3 = str3_
End Property

Public Property Let str3(var As String)
   str3_ = var
End Property

在VB.Net端,您可以使用一种方法来声明“ COM类”以接收VB6类的实例。请注意,此VB.Net类声明Option Strict Off为允许晚绑定到VB6对象成员。

Option Strict Off
Imports System.Runtime.InteropServices
Namespace Global
    <ComClass(Class1.ClassId, Class1.InterfaceId, Class1.EventsId)> _
    Public Class Class1
        Public Const ClassId As String = "0bf2556f-cc0f-420a-9ec5-a209fc967773"
        Public Const InterfaceId As String = "9c758eae-8eb0-4593-91cf-6a494fdcabb1"
        Public Const EventsId As String = "318f0ee0-8d5f-49b7-baa9-83cb8737cf57"

        Public Sub ReceiveVBAClass(obj As Object)
            MsgBox("str1 = " & obj.str1)
        End Sub

        Public Sub ReceiveVBAClassCollection(collection As Object)
            For Each o As Object In DirectCast(collection, System.Collections.IEnumerable)
                MsgBox("str1 = " & o.str1)
            Next
        End Sub
    End Class
End Namespace

在VB6调用端,代码类似于以下内容:

Sub TestToNet()
   Dim c1 As New TestReceiveVBAClassInstance.Class1
   Dim f As New clsDemo
   f.str1 = "hi"
   c1.ReceiveVBAClass f
End Sub

Sub TestToNet2()
   Dim coll As New Collection
   Dim f As clsDemo

   Set f = New clsDemo
   f.str1 = "hi"
   coll.Add f

   Set f = New clsDemo
   f.str1 = "there"
   coll.Add f

   Dim c1 As New TestReceiveVBAClassInstance.Class1
   c1.ReceiveVBAClassCollection coll
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将.NET对象从VB6传递到.NET的问题

来自分类Dev

将NULL从VB6窗口传递到.NET可为空的Int32

来自分类Dev

如何将自定义集合类从VB.NET传递到VB6?

来自分类Dev

委托从VB6到vb.net的错误转换

来自分类Dev

从VB6到VB.NET的转换按钮样式

来自分类Dev

将数组从VBA传递到VB.NET

来自分类Dev

如何使用IPC将数据从ActiveX对象传递到VB6应用程序-(单个实例应用程序)?

来自分类Dev

VB6到.net的通用对话框

来自分类Dev

将.NET ArrayList封送至VB6 [Com interop]

来自分类Dev

将.NET ArrayList封送至VB6 [Com interop]

来自分类Dev

vb6到vb.net的转换'FileName'不是'System.Windows.Forms.RichTextBox'的成员

来自分类Dev

从VB6到VB.NET图形面板的转换2010

来自分类Dev

VB6颜色代码到VB.NET颜色转换

来自分类Dev

使用按钮vb6复制对象

来自分类Dev

在VB.Net MVC中,如何将列表传递到视图并使用模型显示它?

来自分类Dev

将vb6代码转换为vb.net?

来自分类Dev

将vb6迁移到vb.net do,而退出do

来自分类Dev

在vb.net中传递常量列表(数组)

来自分类Dev

VB6使用VB.NET类-它很慢

来自分类Dev

VB6和VB.net中的IsNull

来自分类Dev

VB.Net中的VB6的vbNull是否等效?

来自分类Dev

VB6中的ColorConstants至VB.net

来自分类Dev

Equipvalent of VB6's PaintPicture() method in VB.NET?

来自分类Dev

VB6 + VB.NET lostFocus vs Validate?

来自分类Dev

VB6和VB.net中的IsNull

来自分类Dev

VB6中的ColorConstants至VB.net

来自分类Dev

VB6和VB.NET中的精度差异

来自分类Dev

VB Net-将数据从线程传递到主GUI

来自分类Dev

VB.NET LINQ查询列表(对象)