Я создал массив меток, которые вызываются и помещаются в указанное место на экране (когда я нажимаю кнопку / когда я получаю доступ к этой функции). Как я могу избавиться от этих переменных / надписей с помощью другой кнопки (в другой функции)? Я упоминаю, что в начале я объявил labelarray глобальным.
Public Class MyForm
Dim p_global As Integer
Dim labelarray() As Label
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
...
p_global = p
Dim labelarray(p) As Label
For index As Integer = 0 To p Step 1
labelarray(index) = New Label With {
.Name = String.Format("labelpart_", index.ToString),
.AutoSize = False,
.Size = New Drawing.Size(scal_Part_Width, scal_Part_Height),
.BorderStyle = BorderStyle.FixedSingle
}
...
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
For Index = 0 To p_global Step 1
labelarray(Index).Dispose()
Next
End Sub
End Class
Это выдает мне ошибку на labelarray (Index) .Dispose ()"System.NullReferenceException: 'Ссылка на объект не указана установить экземпляр объекта. '"
Может кто-нибудь объяснить мне, пожалуйста, как я могу вызвать те метки, которые я создал в 1-й функции?
РЕДАКТИРОВАТЬ: Очевидно, это работает как очарование , Мне просто нужно было указать значение при вызове глобального arraylabel () -> в arraylabel (999). Я удалил Dim labelarray (p) As Label из локальной функции Button1_Click.
Вот код, который работал для меня
Public Class MyForm
Dim p_global As Integer
Dim labelarray(999) As Label
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
...
p_global = p
For index As Integer = 0 To p Step 1
labelarray(index) = New Label With {
.Name = String.Format("labelpart_", index.ToString),
.AutoSize = False,
.Size = New Drawing.Size(scal_Part_Width, scal_Part_Height),
.BorderStyle = BorderStyle.FixedSingle
}
...
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
For Index = 0 To p_global Step 1
labelarray(Index).Dispose()
Next
End Sub
End Class
Вопрос: существует ли возможность для инициализации глобальной функции labelarray () локальным вводом? Я пробовал labelarray (p_global), но он выдает ошибку, поэтому я поместил внутрь 999 элементов и надеюсь, что пользователь не превысит этот предел.