• 締切済み

Form間のデータの受け渡し

VB2005で Form1でボタン操作を行ってForm2を表示させ、 そこで簡単なデータの入力を行って、 そのデータをForm1で使用する、ということをしたいのですが、 Form間のデータの受け渡しはどうしたらいいのでしょうか?

みんなの回答

  • meruty
  • ベストアンサー率81% (9/11)
回答No.3

こんばんわ。merutyです。 VB6の場合しか知らないのですが、VB2005でもForm.Show()の仕様が変わっていなければ以下コードでモーダル表示できると思います。 'Form をモーダルで表示する Call Form.Show(vbModal) 'Form をモードレスで表示する Call Form.Show() 単なるフラグの違いです。

  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.2

こんにちは、じゃんぬねっと と申します。 Form1 が呼び出し元、Form2 が呼び出し先なので、 Form2 は親である Form1 に対して関与しないデータの受け渡しが望ましいです。 Form2 に Public なプロパティを定義する方法を説明しますと、 Dim frm2 As New Form2() frm2.定義したプロパティ = 渡したいもの If frm2.ShowDialog() = DialogResult.OK Then   Me.TextBox1.Text = frm2.返したい値 End If となります。 この他、メソッドの引数として渡す方法もあります。 もちろん、メソッドも Public として定義する必要があります。 さらには、メソッドの戻り値で結果を受け取るということもできます。 Dim frm2 As New Form2() Dim result As ClassA = frm2.ExecuteHogeHoge("これを渡す", "あれを渡す") 即時的な動作が伴う場合はメソッド、 クライアントの入力待ちが発生するのであれば ShowDialog メソッド + プロパティ が良いでしょう。

回答No.1

私が良く使う手法は ・Form2で外部に渡す変数をPublic宣言またはPropatyとする。 ・Form1からForm2を表示する時は、モーダル(ダイアログとして)開く。 ・Form2からForm1に戻る時には、Form2をHideする。(Unloadはしない) ・Form1でForm2の変数を取得後、Form2をUnloadする。 VB6の時からの方法なので命令が異なっているかも知れません。

murano47
質問者

お礼

ご回答ありがとうございます。 「モーダルとして開く」といのは Form2.show() というコマンドとまた意味が異なるのでしょうか?

関連するQ&A