Инициализация новой метки в коде - вылетает - PullRequest
2 голосов
/ 28 ноября 2011

Я преобразую приложение из 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 ]

4 голосов
/ 28 ноября 2011

Прежде всего вам нужно создать экземпляр массива 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 голос
/ 28 ноября 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
...