Vb.net 跨类和窗体共享变量
我有一个名为DataStorage的类,它存储我在程序中使用的所有公开声明的变量。我的主类从DataStorage调用一个公共数组,并用值填充它。然后,主类调用windows窗体,并用数组中的值填充窗体上的文本框。然而,当我运行程序时,表单会出现空白文本框。我不明白为什么会这样。我还尝试从表单的load函数而不是在主类中填充文本框。我调试并逐步完成了代码,主类很好地用值填充了数组。但是当表单被调用时,我开始逐步遍历代码来填充文本框,它说数组等于零。如果数组存储在主类和窗体都调用的单独类中,为什么主类和窗体之间的值设置为null? 下面是我的代码的样子:Vb.net 跨类和窗体共享变量,vb.net,Vb.net,我有一个名为DataStorage的类,它存储我在程序中使用的所有公开声明的变量。我的主类从DataStorage调用一个公共数组,并用值填充它。然后,主类调用windows窗体,并用数组中的值填充窗体上的文本框。然而,当我运行程序时,表单会出现空白文本框。我不明白为什么会这样。我还尝试从表单的load函数而不是在主类中填充文本框。我调试并逐步完成了代码,主类很好地用值填充了数组。但是当表单被调用时,我开始逐步遍历代码来填充文本框,它说数组等于零。如果数组存储在主类和窗体都调用的单独类中,为什么
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
如果你不想给出一个尺寸,那么使用一个列表(t)
可能的副本我在搜索时找不到类似的东西;我一定没有输入正确的关键字。无论如何,我试过了,但我的程序仍然在同一点失败,出现了同样的错误。现在,当它尝试在测试方法中填充数组时,我得到一个nullreferenceexception。请用新代码更新您的问题。好的,谢谢您回答了我的问题。我没有考虑使用数组以外的东西。如果我的答案有帮助,请接受答案,并在答案左侧打勾(勾号)。好的,对不起。首次在stackoverflow上过帐
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