在代码中初始化新标签 - 崩溃

时间:2011-11-28 09:35:35

标签: vb.net arrays vb6 controls vb6-migration

我正在将应用程序从VB6转换为VB.NET,并且需要在代码(控件数组)中声明和初始化一些控件。我把它全局声明,所以其他表单可以访问存储在其中的数据,然后我尝试在Form_Load()子句中操作它们:

Public lblDataZone() As Label

Private Sub Form_Load() Handles Me.Load

    lblDataZone(0) = New Label

    With lblDataZone(0)
            .Height = 13
            .Text = "Zone (l/min)"
            .Left = 6
            .Top = 42
    End With

我得到的错误是“对象引用未设置为对象的实例”。我觉得我在这里错过了一些巨大的东西,但它有什么问题呢?

由于

2 个答案:

答案 0 :(得分:4)

首先,你必须实例化Label的数组。您可以使用ReDim()New关键字:

 Private Sub Form_Load() Handles Me.Load
    ReDim lblDataZone(0)   'Or lblDataZone = New Label(0) {}
    lblDataZone(0) = New Label
    With lblDataZone(0)
            .Height = 13
            .Text = "Zone (l/min)"
            .Left = 6
            .Top = 42
    End With
    ....

答案 1 :(得分:1)

更改第一个PUBLIC以分配具有所需维度的数组,而不仅仅是声明它:

Public lblDataZone(99) As Label

Private Sub Form_Load() Handles Me.Load

  lblDataZone(0) = New Label

  With lblDataZone(0)
        .Height = 13
        .Text = "Zone (l/min)"
        .Left = 6
        .Top = 42
  End With