Form間のデータ渡しについて
申し訳ありません。VB.NET初心者です。
Form1から、ボタンAをクリックするとForm2がオープンします。
Form1から、ボタンBをクリックするとForm3がオープンします。
Form1では、Form2またはForm3で設定した値をそれぞれ演算に使おうとしています。
MicrosoftのHPからパクってForm1 - Form2間のデータの引渡しを行うことはできたの
ですが、新規でForm3を作成して、Form1 - Form3間のデータの引渡しを行おうとする
とForm3の立ち上がり時に
"NullReferenceException はハンドルされませんでした"となり、
困ってしまいました。
使われている方から見ると簡単かもしれず
申し訳ありませんが、どなたか教えていただけないでしょうか。
==================== Form1.vb =======================
Form1には、Label1、Label2、Button1、Button2があります。
Public Class Form1
Inherits System.Windows.Forms.Form
Private m_form2 As Form2
Private m_form3 As Form3
Public Property LabelText() As String
Get
Return Label1.Text
End Get
Set(ByVal Value As String)
Label1.Text = Value
End Set
End Property
Public Property LabelText2() As String
Get
Return Label2.Text
End Get
Set(ByVal Value As String)
Label2.Text = Value
End Set
End Property
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles ScaleYokusou.Click
m_form2 = New Form2(Me)
m_form2.ShowDialog()
m_form2.Dispose()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles ScaleHikito.Click
m_form3 = New Form3()
m_form3.ShowDialog()
m_form3.Dispose()
End Sub
End Class
==================== Form2.vb =======================
Form2には、TextBox1、Button1があります。
Public Class Form2
Inherits System.Windows.Forms.Form
Private m_form1 As Form1
Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Handles TextBox1.TextChanged
If m_form1 Is Nothing = False Then
m_form1.LabelText = Me.TextBox1.Text
End If
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
If m_form1 Is Nothing = False Then
Me.TextBox1.Text = m_form1.LabelText
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
Me.Close()
End Sub
End Class
==================== Form3.vb =======================
Form3には、TextBox1、Button1があります。
Public Class Form3
Inherits System.Windows.Forms.Form
Private m_form1 As Form1
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles TextBox1.TextChanged
If m_form1 Is Nothing = False Then
m_form1.LabelText2 = Me.TextBox1.Text
End If
End Sub
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Me.TextBox1.Text = m_form1.LabelText2
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
Me.Close()
End Sub
End Class
お礼
ご回答いただきましてありがとうございます。 なるほど、プロパティでないとシリアライズ、バインド時に 影響ありと。 大文字の使用規則、勉強になりました。 他言語チックに記述してしまいました。 ありがとうございました。