vb.net - 跨类和表单共享变量
问题描述
我有一个名为 DataStorage 的类,它存储我在程序中使用的所有公开声明的变量。我的主类从 DataStorage 调用一个公共数组并用值填充它。然后主类调用一个窗口窗体并用数组中的值填充其上的文本框。但是,当我运行程序时,表单会出现空白文本框。我不明白为什么会这样。我还尝试从表单的加载函数而不是主类中填充文本框。我调试并单步执行了我的代码,主类用值很好地填充了数组。但是当表单被调用时,我开始逐步执行代码来填充文本框,它说数组等于没有。如果数组存储在主类和表单调用的单独类中,为什么主类和表单之间的值设置为空?这是我的代码的样子:
Public Class Main
Private ds As New DataStorage
Public Sub Test()
For i = 0 to 2
ds.Info(i) = "Hello"
Next
Form1.ShowDialog()
End Sub
End Class
Public Class DataStorage
Public Info() As String
End Class
Public Class Form1
Private ds As New DataStorage
Private Sub Form1_Load(sender As Object, e As EventAgrs) Handles MyBase.Load
Textbox1.Text = ds.Info(0)
Textbox2.Text = ds.Info(1)
Textbox3.Text = ds.Info(2)
End Sub
我只是把它叫做Form1;该程序从主类中的子测试开始。我只需要一种方法来获得任何类或表单都可以访问的变量/数组,并且除非我告诉它,否则不要更改值或设置为 null。
解决方案
在尝试填充数组之前,您必须为数组指定一个大小。
Public Class TestArray
Private ds As New DataStorage
Private Sub TestArray_Load(sender As Object, e As EventArgs) Handles MyBase.Load
FillArray()
TextBox1.Text = ds.Info(0)
TextBox2.Text = ds.Info(1)
TextBox3.Text = ds.Info(2)
End Sub
Public Sub FillArray()
For i = 0 To 2
ds.Info(i) = "Hello"
Next
End Sub
End Class
Public Class DataStorage
Public Info(2) As String
End Class
如果您不想给出大小,请使用 List(Of T)
Public Class TestArray
Private ds As New DataStorage
Private Sub TestArray_Load(sender As Object, e As EventArgs) Handles MyBase.Load
FillList()
TextBox1.Text = ds.Info(0)
TextBox2.Text = ds.Info(1)
TextBox3.Text = ds.Info(2)
End Sub
Public Sub FillList()
For i = 0 To 2
ds.Info.Add("Hello")
Next
End Sub
End Class
Public Class DataStorage
Public Info As New List(Of String)
End Class
推荐阅读
- ios - Flutter 应用程序构建失败
- azure - Azure 通知中心 - 从移动应用注册并通过应用后端发送通知
- python - 为什么 df.columns 是一个空列表,而如果我打印出数据框,我可以看到列名?蟒蛇熊猫
- python - 从容器内的 Python 脚本读取 Docker 容器外的 HDF 文件
- python - 如何将多个输入循环到字典文件 Wirth Python 中?
- discord.js - Discord.Js 在 + 后添加空格的问题
- python - 如何在 Django 中对 ListView 的 get_context_data() 进行单元测试?
- node.js - 我的笔记本电脑如何作为 Web 服务器工作,它将 24/7 全天候将数据传输到数据库
- javascript - 检查数组数组是否包含JavaScript中的另一个数组的最佳优化方法是什么?
- javascript - TypeError:无法读取 null 的属性“销毁”