vb.net - 从集合中获取对象到另一个表单
问题描述
在我的第二个表单中,我有一个对象集合,我需要时添加它。
例如,当我想从另一个表单访问该集合中的第一个对象时。它什么也没给我:当我这样做时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
.
解决方案
您断言该集合为 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
推荐阅读
- node.js - 请求帖子正文未交付给特快专递处理程序
- reactjs - 我应该使用 beforeEach() 安装并为每个测试设置道具还是在每个测试开始时安装特定组件?(使用 Enzyme、Chai 和 Mocha)
- javascript - Workbox 似乎没有从 webpack 构建中预缓存块
- elasticsearch - 弹性搜索:查询新增字段
- ssis - 记录类型会影响使用金汇软件迁移的性能吗?
- python - 从支持向量回归中找到回归方程
- angular - 参考错误:变量未在“onclick”中定义
- svelte - 苗条的反应性减速没有按预期工作
- python - 在直线的末端画一个四分之一圆
- windows - Shell Link 常用对话框?