好的首先我在这里有1个数组
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
抛出错误:“未设置对象变量或With块变量。”
任何帮助都将不胜感激
@ 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
使用调试器,您可以检查变量以查找Nothing。
这很可能是ColJD1
数组,看不到进行调用的范围,但这是一个非常常见的错误。成员一样Me.JD1_1没有得到一个值,直到之后的InitializeComponent()方法运行。在该方法运行之前,变量初始化得太早了。因此,它将仅包含Nothing。您需要这样编写它:
Dim ColJD1 As TextBox()
Public Sub New
InitializeComponent()
ColJD1 = {Me.JD1_1, Me.JD1_2, Me.JD1_3}
End Sub
其中Sub New是需要添加的构造函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句