最初に私はこれを試しました:
Public Class frmWait
Public Sub New(ByVal uWindowText As String, ByVal uInfoText As String)
Me.Text = uWindowText
Me.lblInfoText.Text = uInfoText
End Sub
End Class
しかし、私がこのようなフォームを開始したとき
Dim wait As New frmWait("blah", "blah")
wait.Show()
...この行で「NullReference Exception」と言われました:
Me.lblInfoText.Text = uInfoText
フォームのテキストの設定は正常に機能しました。さて、テキストを設定しようとしたときに、ラベルがまだ作成されていないことに気づきました。
次に、次のことを試しました。テキストを変数に保存し、コントロールが作成されたときにそれらを設定したいと考えました。「Form_Load」はそのための良いイベントだと思いました:
Public Class frmWait
Private m_sWindowText As String = ""
Private m_sInfoText As String = ""
Public Sub New(ByVal uWindowText As String, ByVal uInfoText As String)
'we can not set the texts right away because lblInfo does not seem to exist yet
m_sWindowText = uWindowText
m_sInfoText = uInfoText
End Sub
Private Sub frmWait_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Text = m_sWindowText
Me.lblInfoText.Text = m_sInfoText
End Sub
End Class
しかし、それは同じエラーを投げました。ええと、コントロールのテキストを設定できるのはいつですか? 私は初歩的なミスをしましたか?