Как я могу загрузить элементы управления «будущими» формами, прежде чем использовать их?Объяснил подробно: - PullRequest
0 голосов
/ 24 ноября 2011

Я выполняю миграцию на программу vb6, на vb.net. Базовые знания, которые вам необходимы для понимания этого вопроса, заключаются в том, что есть две формы, которые должны общаться друг с другом, frmInput1 и frmInput2. У меня есть следующий код (за frmInput1), который проверяет, имеет ли текстовое поле на frmInput2 определенное значение, по-видимому, до его загрузки:

If frminput2.lblInputMac.Text <> "(no filename)" Then
        Dim calc As CalculationCaster = New CalculationCaster
        Call calc.FillMac()
        cmdNext.Enabled = False

        frminput2.FraInner.Enabled = True

В строке If при запуске я получаю следующую ошибку:

"Object reference not set to an instance of an object."

То, что я предполагаю, означает, что объект в frmInput2 еще не был загружен. Как я могу загрузить frmInput2, прежде чем я покажу его?

Спасибо

Ник

Ответы [ 3 ]

1 голос
/ 24 ноября 2011

frminput2, вероятно, является неявным глобальным экземпляром типа frminput2.

Если вы определяете тип формы в VB6 с именем MyForm, платформа автоматически создает неявную глобальную переменную с тем же именем MyForm. Всякий раз, когда вы ссылаетесь на эту переменную в коде, она автоматически загружает экземпляр формы для вас.

Это как если бы у вас был этот код.

Public Function MyForm() As MyForm
  Static f As MyForm
  If f Is Nothing Then
    f = New MyForm
  End If
  Return f
End Function
0 голосов
/ 24 ноября 2011

Создать экземпляр формы.

Dim f As New frmInput2

Затем вы можете использовать любые свойства, методы или элементы управления в форме.

If f.lblInputMac.Text  <> "(no filename)" Then
    ...
End If
0 голосов
/ 24 ноября 2011
dim frm1 as new frmInput1 
dim frm2 as new frmInput2

На этом этапе вы должны иметь возможность общаться между формами без их отображения. Вы не должны ссылаться на формы без явного их создания.

...