1

以下给了我一个空引用错误。我怎样才能在避免错误的同时完成这个简单的任务?

谢谢!

编辑:L1、L2 等是我表单中的标签。

Dim labelArray(,) As Label = {{L1, L2, L3, L4}, {L5, L6, L7, L8}, {L9, L10, L11, L12}, {L13, L14, L15, L16}}


private sub button_click(stuff that goes in here)
labelArray(zeroPoint.X, zeroPoint.Y).BackColor = Color.LimeGreen
end sub

编辑:我通过在表单加载方法中执行以下操作来使其工作..

labelArray(0, 0) = Me.L1
    labelArray(0, 1) = Me.L2
    labelArray(0, 2) = Me.L3
    labelArray(0, 3) = Me.L4

    labelArray(1, 0) = Me.L5
    labelArray(1, 1) = Me.L6
    labelArray(1, 2) = Me.L7
    labelArray(1, 3) = Me.L8

    labelArray(2, 0) = Me.L9
    labelArray(2, 1) = Me.L10
    labelArray(2, 2) = Me.L11
    labelArray(2, 3) = Me.L12

    labelArray(3, 0) = Me.L13
    labelArray(3, 1) = Me.L14
    labelArray(3, 2) = Me.L15
    labelArray(3, 3) = Me.L16
4

2 回答 2

2

您的标签数组初始化程序在 InitializeComponent() 方法之前运行,您的所有标签都在该方法中被实例化。您实际上是在向数组添加一堆空引用。

将数组声明保留在原处,但将赋值代码移动到表单构造函数的末尾,我认为这将解决问题。

除此之外,您还需要检查 zeropoint.X 和 zeropoint.Y 结果是否为有效索引。请记住,默认情况下,vb.net 索引的工作方式与 C# 或 VB6 略有不同。

于 2012-09-27T03:14:53.250 回答
0

尝试这个,

Dim labelArray(,)
Private Sub button_click(stuff that goes in here)
    labelArray = New Label(,) {{l1, l2, l3, l4}, {l5, l6, l7, l8}, {l9, l10, l11, l12}, {l13, l14, l15, l16}}
    labelArray(zeroPoint.X, zeroPoint.Y).BackColor = Color.LimeGreen
End Sub
于 2012-09-27T03:02:19.490 回答