嘿,我有以下代码:
Dim radarStrengthImages() As PictureBox = ({imgRadar_Strength1, imgRadar_Strength2, imgRadar_Strength3, imgRadar_Strength4, imgRadar_Strength5, imgRadar_Strength6, imgRadar_Strength7, imgRadar_Strength8})
Dim radarStrengthResourcesON() As Bitmap = ({My.Resources.radarON_16, My.Resources.radarON_17, My.Resources.radarON_18, My.Resources.radarON_19, My.Resources.radarON_20, My.Resources.radarON_21, My.Resources.radarON_22, My.Resources.radarON_23})
Dim radarStrengthResourcesOFF() As Bitmap = ({My.Resources.radar_16, My.Resources.radar_17, My.Resources.radar_18, My.Resources.radar_19, My.Resources.radar_20, My.Resources.radar_21, My.Resources.radar_22, My.Resources.radar_23})
imgRadar_StrengthX 是表单上图片框的名称, My.Resources.radar_XX 是图片框的图片。
但是,当我使用此代码时:
Dim intX As Integer = 0
Do Until intX = 8
radarStrengthImages(intX).Image = radarStrengthResourcesON(intX)
intX += 1
Loop
我收到错误:
未将对象引用设置为对象的实例
就像这样:
radarStrengthImages(intX).Image = radarStrengthResourcesON(intX)
答案 0 :(得分:1)
问题是这个数组从索引0开始,你有8个项目
将循环更改为
Do Until intX = 7
现在应该可以了
或者如果数组会及时更改,请使用变量来处理最大值
Module Module1
Sub Main()
Dim intX As Integer = 0
Dim test(7) As Integer '8 item
Dim max = test.Length - 1
Do Until intX = max
intX += 1
Loop
Console.WriteLine("intX: " & intX)
Console.ReadKey()
End Sub
End Module
答案 1 :(得分:1)
这种代码无法正常工作,初始化顺序始终是一个重要的细节。在之后运行InitializeComponent()方法时,您使用的变量不会得到值。但是在发生之前,数组已经初始化。所以你只需用Nothing,nada,zippo初始化它们。 “未设置对象引用”是您将获得的zippo异常。
稍后你必须这样做,这需要将数组的初始化程序移动到构造函数中。带有文本框的示例表单的通用语法:
Public Class Form1
Dim boxes As TextBox()
Public Sub New()
InitializeComponent()
boxes = New TextBox() {TextBox1, TextBox2, TextBox3}
End Sub
End Class