Vb.net 循环karstieji(x)的VB。位置=未处理新点(0,a)nullreferenceException

Vb.net 循环karstieji(x)的VB。位置=未处理新点(0,a)nullreferenceException,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,Vb应用程序冻结I get nullreferenceException在新点(0,a)上未处理。以下是代码 For x = 1 To 5 Dim karstieji(x) As Label Dim karstieji1(x) As Button Dim a As Integer Dim b As Integer a = 0 b = 0 Panel2.Controls.Add(

Vb应用程序冻结I get nullreferenceException在新点(0,a)上未处理。以下是代码

    For x = 1 To 5
        Dim karstieji(x) As Label
        Dim karstieji1(x) As Button
        Dim a As Integer
        Dim b As Integer
        a = 0
        b = 0
        Panel2.Controls.Add(karstieji(x))
        karstieji(x).Location = New Point(0, a)
        karstieji(x).Size = New Size(140, 20)
        karstieji(x).Text = "Bulvyniai blynai"
        karstieji(x).Font = New Font(1, 12)
        Panel2.Controls.Add(karstieji1(x))
        karstieji1(x).Location = New Point(140, b)
        karstieji1(x).Size = New Size(12, 12)
        a += 20
        b += 12
    Next

无法在VB.NET中使用控件数组,因此尝试使用的代码将无法工作

如果您需要保留对控件的引用,我建议使用通用列表:

'In your class
Private _labels As New List(Of Label)
Private _buttons As New List(Of Button)


'create the controls
Dim a As Integer = 0
Dim b As Integer = 0

    For x = 1 To 5
        Dim karstieji As New Label
        Dim karstieji1 As New Button
        Panel2.Controls.Add(karstieji)
        karstieji.Location = New Point(0, a)
        karstieji.Size = New Size(140, 20)
        karstieji.Text = "Bulvyniai blynai"
        karstieji.Font = New Font(1, 12)
        Panel2.Controls.Add(karstieji1)
        karstieji1.Location = New Point(140, b)
        karstieji1.Size = New Size(12, 12)
        a += 20
        b += 12
        'add a reference to the controls so you can refer to them later
        _labels.Add(karstieji)
        _buttons.Add(karstieji1)
    Next

注:我还将
a
b
变量移到循环外,因为这些变量始终为零,否则他还应初始化按钮,否则在
karstieji1(x)处会发生nullreference异常。位置=新点(140,b)
数组不能在arrayy中声明新数组。sranken如何初始化按钮karstieji1(x)。位置=新点(140,b)如何操作?请参阅Matt的代码。它将解决您的问题:)Matts代码与我的问题无关:/nullreferenceException在newpoint(0,a)上未处理。您可以使用控件数组(尽管它们与VB6中的“控件数组”不对应)。OP代码中的错误是没有实例化控件类。