投稿者   (社会人) 投稿日時 2008/11/26 10:12:19
nさんも書かれているように、他フォームのコントロールを直接参照するのは好まれなかったりします。
それと、子が親を(この場合はForm2がForm1を)見に行く実装は冗長性に欠けるので、これまた好まれなかったりします。
(あ、これも最初にnさんが書いてますねorz)

ちなみに
リスナーさんの
>と入力し、2枚目を開かせます。そして2枚目のフォームロードイベントで、
>TextBox1.Text = Form1.TextBox1.Text

penetraterさんの
>Form2のほうに
>Me.TextBox1.Text = Form1.TextBox1.Text
の二つの処理に実質違いはありません。

こういう書き方だと、例えばこんな場合に面倒くさくなります。
・Form2の親がForm1からForm3に変わったらどうする?
・TextBox1の名前がTxtBox1とかに変わったらどうする?

今回のように1対1の単純な関係なら、ちょちょいと手直ししてお終いですが、Form2のような「子フォーム」が複数いた場合はどうでしょう。
Form1に修正が入る度に全ての子フォームを手直しするのは現実的ではありません。
ならどうするのかと言うと
例えばForm2に以下のようなプロシージャを実装します。
    Public Sub SetText(ByVal strHoge As String)
        Me.TextBox1.Text = strHoge
    End Sub

そしてこのプロシージャをForm1から呼び出します。
  Dim frm2 AS New Form2
  frm2.SetText(TextBox1.Text)
  frm2.Show()

こうする事で、Form2の親が変わっても、値の取得先が変わっても、柔軟に対応することができます。

※このやり方が王道かどうかは知りませんし、いつでもこのパターンが適応できる訳でもありませんのであしからず。