将数组作为参数VB.NET调用时出错

将数组作为参数VB.NET调用时出错,vb.net,Vb.net,首先我这里有一个数组 Dim JD = {"0", "LIE"} 然后我有3个文本框,我也放在数组中 Dim ColJD1 As TextBox() = {Me.JD1_1, Me.JD1_2, Me.JD1_3} 然后在子例程中使用这些数组: Sub fillword(ByVal num1, ByVal qtychar, ByVal num2, ByVal i, ByVal Coltxtbox) If Strings.Mid(My.Computer.File

首先我这里有一个数组

  Dim JD = {"0", "LIE"} 
然后我有3个文本框,我也放在数组中

  Dim ColJD1 As TextBox() = {Me.JD1_1, Me.JD1_2, Me.JD1_3}
然后在子例程中使用这些数组:

     Sub fillword(ByVal num1, ByVal qtychar, ByVal num2, ByVal i, ByVal Coltxtbox)

     If Strings.Mid(My.Computer.FileSystem.ReadAllText("SAVE.txt"), Strings.InStr(My.Computer.FileSystem.ReadAllText("SAVE.txt"), num1), qtychar) = num2 & ".True" Then

        For test = 1 To Strings.Len(JD(i))
            For Each txtbox In Coltxtbox
                Dim a As String = Strings.Mid(JD(i), test, 1)
                MsgBox(a)
                txtbox.Text = i     => here is the problem
                i = i + 1
            Next
        Next
    End If

  End Sub

   Sub loadgame1()
      fillword("1", 6, "1", 1, ColJD1)
   End Sub

   Private Sub Button_click bla bla 
      loadgame1()
   End Sub
这是一个错误: “未设置对象变量或带块变量。”

非常感谢您的任何帮助

@w0051977实际上变量名是“test”,而不是“uji”

收到Hans的建议后,我确实修改了代码,但仍然抛出错误: 我更改了代码:

    Dim JD = {"0", "RIA"}
    Dim ColJD1 As TextBox()

    Sub fillarray()
     InitializeComponent()
        ColJD1 = {JD1_1, JD1_2, JD1_3}
    End Sub

     Sub fillword(ByVal num1, ByVal qtychar, ByVal num2, ByVal i, ByVal Coltxtbox)
     fillarray()
      If Strings.Mid(My.Computer.FileSystem.ReadAllText("SAVE.txt"), Strings.InStr(My.Computer.FileSystem.ReadAllText("SAVE.txt"), num1), qtychar) = num2 & ".True" Then
       For test = 1 To Strings.Len(JD(i))
               For Each txtbox In Coltxtbox => Now the problem moves here , it throws error "Object reference not set to an instance of an object."
                  Dim a As String = Strings.Mid(JD(i), test, 1)
                  MsgBox(a)
                  txtbox.Text = i     
                  i = i + 1
               Next
            Next
         End If
      End Sub

      Sub loadgame1()
         fillword("1", 6, "1", 1, ColJD1)
      End Sub

      Private Sub Button_click bla bla 
        loadgame1()
      End Sub

使用调试器,您可以检查变量以找到一个不存在的变量

这很可能是
ColJD1
数组,无法看到进行调用的范围,但这是一个非常常见的错误。像Me.JD1_1这样的成员只有在InitializeComponent()方法运行之后才能获得值。在该方法运行之前,该变量初始化过快。所以它将只包含一无所有的元素。你需要这样写:

Dim ColJD1 As TextBox()

Public Sub New
    InitializeComponent()
    ColJD1 = {Me.JD1_1, Me.JD1_2, Me.JD1_3}
End Sub

其中Sub New是需要添加的构造函数。

变量:uji的作用是什么?亲爱的先生,它仍然抛出“对象引用未设置为对象的实例”,我仍然不知道应该在数组声明上添加“New”在哪里OK不管我最后的评论,代码工作得很有魅力,谢谢@Hans Passant