第二次打开时,Form1列表框未加载到Form3数组

时间:2019-04-16 03:39:47

标签: arrays vb.net forms

Form3包含从Form1列表框中加载其项目的数组元素。 当关闭form3并再次将其重新打开时,数组将变为空,并且数组中没有可比较的值。

试图在form3中获取另一个列表框,并通过在每次运行中每次刷新它来获取元素。但它不起作用。

form1

Do while xr.read()
If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "Rating" Then
dim rating(0) as string = {xr.ReadElementString}
ListBox5.Items.Add(rating(0))

end If

 Private Sub RatingsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RatingsEnteredVsAppxRatingsToolStripMenuItem.Click
        Dim myform As Form3
        myform = New Form3

        myform.Show(Form3)

        InitializeComponent()
    End Sub


form3

Public class form3

Dim toarray() As String = Form1.ListBox5.Items.OfType(Of String).ToArray()

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Compare operations to array
end sub

end class

我希望当再次从form1的菜单栏关闭并打开form3时,toarray仍应包含listbox5的元素。

2 个答案:

答案 0 :(得分:0)

代替直接访问控件“ Form1.ListBox5”,您可以提供一个包含值(评级数组)的对象/类,并在实例化后将其传递给Form1.ListBox5和Form3。

答案 1 :(得分:0)

Remove InitializeComponent() after showing Form3. It is recreating your control & removing the items that you have added to it when reading your xml.

Private Sub RatingsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RatingsEnteredVsAppxRatingsToolStripMenuItem.Click
    Dim myform As Form3
    myform = New Form3

    myform.Show(Form3)
End Sub