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

Я ожидаю, что когда form3 будет закрыта и снова открыта из меню-формы form1, то массив все равно должен содержать элементы listbox5.

1
Nilesh Giri 16 Апр 2019 в 06:39

2 ответа

Лучший ответ

Удалите InitializeComponent() после отображения формы 3. Он воссоздает ваш контроль и удаляет элементы, которые вы добавили к нему при чтении вашего 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
0
ItsPete 16 Апр 2019 в 23:32

Вместо прямого доступа к элементу управления «Form 1.ListBox 5», вы можете предоставить объект / класс, который содержит значения (массив оценок), и передать его в Form1.ListBox 5 и Form 3 после создания экземпляра.

0
rainan16 16 Апр 2019 в 11:16