该程序的目的是运行一系列图片框并将其 .image 属性设置为特定图像。我不断收到错误“对象引用未设置到对象的实例”。来自显示“DirectCast(Me.Controls(pic(i)), PictureBox).Image = My.Resources.glass_buttonred”的行......奇怪的是,如果我将该代码移到 for 循环之外,它就会运行美好的。
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim pic(2) As Object
For i = 0 To 2
pic(i) = "picturebox" + Convert.ToString(i)
DirectCast(Me.Controls(pic(i)), PictureBox).Image = My.Resources.glass_buttonred
Next
Label1.Text = pic(1)
End Sub
这是工作代码。谢谢!希望它能帮助其他想要将字符串转换为控制对象的人
Dim pic(2) As Object
For i = 0 To 2
pic(i) = "picturebox" + Convert.ToString(i + 1)
DirectCast(Me.Controls(pic(i)), PictureBox).Image = My.Resources.glass_buttonred
Next
Label1.Text = pic(1)
最佳答案
问题可能是 Me.Controls
区分大小写。如果您使用设计器来构建这些,您可能需要:
' Note the upper case letters below
pic(i) = "PictureBox" + (i + 1).ToString()
DirectCast(Me.Controls(pic(i)), PictureBox).Image ' ...
默认情况下,设计者将把控件命名为“PictureBox1”(第一个控件),将第二个控件命名为“PictureBox2”(与大小写相关)。
关于arrays - 你调用的对象是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19056156/