過去ログをみないで質問するのは如何なもんか... という意見に賛同です。その際の回答例として以下があります。
▼例▼
Public Class Form1
Inherits System.Windows.Forms.Form
Private ID_ As String = "ABCDEF"
Public ReadOnly Property ID() As String
Get
Return ID_
End Get
End Property
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim fm2 As New Form2
fm2.id = ID
fm2.Show()
End Sub
End Class
Public Class Form2
Inherits System.Windows.Forms.Form
Private id_ As String
Public Property id() As String
Get
Return id_
End Get
Set(ByVal Value As String)
id_ = Value
End Set
End Property
Private Sub getID_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles getID.Click
MessageBox.Show(id)
End Sub
End Class
▲例▲
前提は Form2で使う情報がForm2のインスタンス化以前に判別している ことですね。
Form2とForm1がパラレルで動作している時の同期は取れません。
ということで, Form2に
Private m_form1 As Form1
Public Sub New(ByVal fr As Form1)
MyBase.New()
m_form1 = fr
InitializeComponent()
End Sub
form1側:
form2 = new Form2(me)
form2.show
を実装して, m_form1.xxx で Form1の内容を操作するように言われています。
動作するのですが、一抹の不安定感を感じるのです。 Formが10枚に増え,各々が Form1のデータを共有する,加えて,Form3の情報を Form4,5,6で使うとなると,各画面で Form_xのPropertyを作るの?
なんかクラス間がスパゲティになる気がして嫌。
グローバルクラスを一つ作って,(モジュールは嫌。VBでも使わない。) そのクラスをForm間で共有するほうが良いと思っています。
クラスに他のクラスインスタンスを保持するのは Has-A の関係で当然ありなんですが, Form2.m_form1.LabelText = Form2.TextBox1.Text という記述にイマイチ感があります。
いいのですかね。(ognacが変なのかな)