Vb.net 如何在visual basic.net中使用标签对象初始化数组

Vb.net 如何在visual basic.net中使用标签对象初始化数组,vb.net,visual-studio,Vb.net,Visual Studio,所讨论的代码具体位于第143行。每当我尝试访问数组中的标签(如so Dicelbls(0).Text)时,我都会收到一个空引用错误。显然,我没有正确地声明数组,有什么建议吗?你是对的,问题在第143行: Dim Dicelbls As Label() = {lblP1Die0, lblP1Die1, lblP1Die2, lblP2Die0, lblP2Die1, lblP2Die2, lblP1Score, lblP2Score} 具体来说,在对象初始化过程中,当此代码运行时,这些标签变量后

所讨论的代码具体位于第143行。每当我尝试访问数组中的标签(如so Dicelbls(0).Text)时,我都会收到一个空引用错误。显然,我没有正确地声明数组,有什么建议吗?

你是对的,问题在第143行:

Dim Dicelbls As Label() = {lblP1Die0, lblP1Die1, lblP1Die2, lblP2Die0, lblP2Die1, lblP2Die2, lblP1Score, lblP2Score}
具体来说,在对象初始化过程中,当此代码运行时,这些标签变量后面的引用仍然为null/Nothing。所以你在数组中没有任何引用


要修复代码,请将初始化移到Form_Load事件。

尝试在Form_Load事件中添加初始化

Dim Dicelbls As Label()

Private Sub Form1_Load(..)
  Dicelbls= new Label() {lblP1Die0, lblP1Die1, lblP1Die2, lblP2Die0, lblP2Die1, lblP2Die2, lblP1Score, lblP2Score}
....
End Sub

您正确地声明了数组,但在错误的位置。将变量声明保留在原处,并在创建表单后将赋值移动到某个位置

Class frmMain

    Dim Dicelbls As Label()

    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
        Dicelbls = {lblP1Die0, lblP1Die1, lblP1Die2, lblP2Die0, lblP2Die1, lblP2Die2, lblP1Score, lblP2Score}
    End Sub

    ...

End Class
试试这个:

Dim Dicelbls(8) As Label
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
    Dicelbls = {lblP1Die0, lblP1Die1, lblP1Die2, lblP2Die0, lblP2Die1, lblP2Die2, lblP1Score, lblP2Score}
End Sub

可能重复编写一个小代码来调试/测试标签数组。