首页 > 解决方案 > 从集合中获取对象到另一个表单

问题描述

在我的第二个表单中,我有一个对象集合,我需要时添加它。

例如,当我想从另一个表单访问该集合中的第一个对象时。它什么也没给我:当我这样做时form2.list.Count,我有 0。我从中了解到,Collection 是 Null。

但是在第二种形式(我创建该集合的形式)中,如果我这样做form2.list.Count,我有正确的计数并且我可以访问所有数据。

我确保收藏是公开的,但我仍然不知道问题出在哪里。

我该如何解决这个问题?

编辑:

Public Class Form2

    Public mycarlist As New carlist

    Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click

        dim mycar as car

        'I have other textbox but for simplicity, I only put one
        mycar = new car(Me.TextBox1.Text) 

        mycarlist.Add(mycar)

        ' Here everything works, I have the correct count and brand
        Form1.TextBox1.Text = mycarlist.count
        Form1.TextBox2.Text = mycarlist(0).brand

        Me.Close()
    End Sub

End Class

我想从这个表单(Form1)中访问这个列表:

Public Class Form1

    Private Sub testbt_Click(sender As Object, e As EventArgs) Handles tesbt.Click
        Me.TextBox3.Text = Form2.mycarlist.Count

        'For example a Property that I want to print
        Me.TextBox4.Text = Form2.mycarlist(0).Brand

    End Sub

    Private Sub openform2_Click(sender As Object, e As EventArgs) Handles openform2.Click
        Form2.Show()
    End Sub

End Class

在 Form1 中,TextBox1 返回我 0

当程序将执行这一行时Me.TextBox2.Text = Form2.mycarlist(0).Brand,我有这个错误:

System.ArgumentOutOfRangeException 来自carlist.

标签: vb.netforms

解决方案


您断言该集合为 null 是不正确的,否则您将收到 NullReferenceException ,其效果如下:

运行时异常(第 -1 行):对象引用未设置为对象的实例。

VB.NET 在访问表单时做了一些时髦的事情。我的猜测是您试图获取错误的 Form2 实例,而 VB.NET 正在幕后创建 Form 的新实例。

你能展示你是如何创建 Form2 的吗?它可能就像引用表单的正确实例一样简单。例如:

Private frm2 As Form2 = New Form2()
' user adds item(s) to list
frm2.list.Count

推荐阅读