我怎样才能摆脱这个错误? Visual Basic 2010

时间:2013-11-13 14:22:54

标签: vb.net nullreferenceexception picturebox

我有一系列的图片框,就像这样(他们都有一个图像显示在他们身上,来自设计师,来自m​​y.resources):

Dim imgSourcePic() As PictureBox = {imgAcronym, imgAcrostic, imgAdjective, imgAdverb, imgAlliteration, imgApostrophe, imgClause, imgComma, imgDialogue}

和另一组图片框(尚未显示图像):

 Dim imgDefinitiontoMatch() As PictureBox = {imgDefinition1, imgDefinition2, imgDefinition3, imgDefinition4, imgDefinition5}

在子NewGame()中,我有一行代码:

imgDefinitiontoMatch(intX).Image = imgSourcePic(intRandomNumber).Image

但是,每当执行这行代码时,我都会收到此错误:

enter image description here

我对它进行了调试,发现数组中的图片框显示的是Image属性为'Nothing'。

enter image description here

我怎样才能将图像分配到imgSourcePic()中的图片框中?

我尝试为所有图片创建变量,例如:

Dim picAcronym As Image = My.Resources.Acronymn_definition
...

但仍然没有取得任何成就。

我希望这不是重复,但我一直试图弄明白,似乎无法做到 它的工作原理:(

非常感谢,并且一如既往地希望这是有道理的。

2 个答案:

答案 0 :(得分:2)

您在InitializeComponent()运行之前填充这些数组,因此所有变量仍为Nothing

您需要在Sub New()之后InitializeComponent()分配数组(创建实际的PictureBox

答案 1 :(得分:1)

你也可以使用表格的Load()事件,我在你的代码中已经看到了这个事件:

Public Class Form1

    Private PBs() As PictureBox

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        PBs = {PictureBox1, PictureBox2, PictureBox3}

        ' ... more code ...

    End Sub

End Class