Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 如何访问在前一个函数中创建的第二个函数上的标签数组?Win Forms App.NET_Function_Variables_Call_Global - Fatal编程技术网

Function 如何访问在前一个函数中创建的第二个函数上的标签数组?Win Forms App.NET

Function 如何访问在前一个函数中创建的第二个函数上的标签数组?Win Forms App.NET,function,variables,call,global,Function,Variables,Call,Global,我创建了一个标签数组,这些标签被调用并放在屏幕上的指定位置(当我按下按钮/当我访问该函数时)。如何使用另一个按钮(在另一个函数中)处理这些变量/标签阵列?我提到,我在一开始就宣布labelarray是全球性的 Public Class MyForm Dim p_global As Integer Dim labelarray() As Label Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Butto

我创建了一个标签数组,这些标签被调用并放在屏幕上的指定位置(当我按下按钮/当我访问该函数时)。如何使用另一个按钮(在另一个函数中)处理这些变量/标签阵列?我提到,我在一开始就宣布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:'对象引用未设置为对象的实例'上给出了一个错误。”

有人能给我解释一下,我怎样才能准确地调用我在第一个函数中创建的labelarray

编辑:很明显,这是一种魅力。我只需要在调用全局arraylabel()->到arraylabel(999)时输入一个值。我从本地功能按钮1\u单击中删除了作为标签的暗标签阵列(p)

以下是对我有效的代码

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个元素放入其中,希望用户不会超过此限制。

您可以在Dispose()之前向IsDisposed进行检查,我搜索IsDisposed,据我所知,新的vb版本已经将此方法作为默认方法了?不管怎样,我找到了一个解决方案,现在它工作了,尽管你能给我一个编辑中最后一个问题的答案吗?(我非常感激)你能用列表代替数组吗?暗标签列表为新列表(标签)否。我想我需要创建一个私有的void函数,这样当我尝试初始化我的arraylist时,我就可以使用我的输入变量了。现在,由于全局变量处于开始阶段,所以程序以级联方式进行,并将其中的任何变量作为数组元素。