Инициализация новой метки в коде - сбой

Я конвертирую приложение из 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

Я получаю сообщение об ошибке: «Ссылка на объект не указывает на экземпляр объекта». Я чувствую, что упускаю здесь что-то огромное, но что в этом не так?

Спасибо


person Nick    schedule 28.11.2011    source источник


Ответы (2)


Прежде всего, вам нужно создать массив 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
    ....
person kv-prajapati    schedule 28.11.2011

Измените первый 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
person Martin    schedule 28.11.2011