• ベストアンサー

VisualBasic.NET MDIアプリの子フォーム間のやりとり

最近VisualBasic.net(2003)を始めた初心者です。 MDIを使ったアプリケーションを作りたいと考えているのですが なかなか進まなくて困っています。 frmA(親フォーム) frmB・formC(子フォーム)を作成して 表示させた後 frmBの中のラベルのテキストや表示を frmCのボタンによって変更したいのですが なかなかうまくいきません。 親フォームからではできるみたいなのですが 子フォームどうしでは できないのでしょうか? ぜひ アドバイスをよろしくお願いいたします。 (説明不足なところは申し訳ございません。)

質問者が選んだベストアンサー

  • ベストアンサー
  • ape5
  • ベストアンサー率57% (85/148)
回答No.2

以下のサンプルはあくまで一つの例であり、もっといい方法があるかもしれません。参考程度までに ============================================================== Public Class Form1 Inherits System.Windows.Forms.Form Private frm2 As Form2 Private frm3 As Form3 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.IsMdiContainer = True frm2 = New Form2() frm3 = New Form3() ’各フォームのプロパティで登録 frm2.frmMDI_3 = frm3 frm3.frmMDI_2 = frm2 frm2.MdiParent = Me frm3.MdiParent = Me frm2.Show() frm3.Show() End Sub End Class --------------------------------------------------------------- Public Class Form2 Inherits System.Windows.Forms.Form Private frmMDI3 As Form3 ’プロパティの設定 Public Property frmMDI_3() As Form3 Get Return frmMDI3 End Get Set(ByVal Value As Form3) If Not Value Is Nothing Then frmMDI3 = Value End If End Set End Property End Class --------------------------------------------------------------- Public Class Form3 Inherits System.Windows.Forms.Form Private frmMDI2 As Form2 ’プロパティの設定 Public Property frmMDI_2() As Form2 Get Return frmMDI2 End Get Set(ByVal Value As Form2) If Not Value Is Nothing Then frmMDI2 = Value End If End Set End Property Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ’ここでもう一方の子フォームのテキストボックスの書き換え frmMDI2.TextBox1.Text = TextBox1.Text End Sub End Class ===============================================================

key_kun
質問者

お礼

回答ありがとうございます。 こんなに便利なコードの書き方があったのを初めて知りました。 少しずつ覚えていきたいと思います。

その他の回答 (1)

  • Hardking
  • ベストアンサー率45% (73/160)
回答No.1

親画面Aのみ子画面B、Cのオブジェクトインスタンスが参照可能 という状態だからです。 子画面間で相互操作したいのであれば frmB,frmCをPublic変数に変更し、画面コントロールを 画面オブジェクト変数で修飾する。 例.frmB.txtWORK.text = "AAAAA"

key_kun
質問者

補足

早速回答ありがとうございます。 >frmB,frmCをPublic変数に変更し、画面コントロールを >画面オブジェクト変数で修飾する。 どのようにしたら よいのでしょうか? 勉強不足ですみません。

関連するQ&A

専門家に質問してみよう