MDI親ホームからMDI子ホームを操作したいのですが への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 大池  (社会人) 投稿日時 2010/7/28 22:34:46
こんにちわ
自己都合でしばらくPCから離れていまして大変失礼いたしました。お許しください。

cupid様
ご指摘ありがとうございます。勉強中でしていまテーマとしていますのは
あるデータベース(といいましてもcsvファイルの集合です)の作成とその加工したものを表示、印刷しようとしています。MDI親フォームに「データ入力・訂正」、「A図」、「A表」・・・の作業メニューとファイル一覧リストボックスを設けています。したがってご指摘のように「情報表示板的」なものが大半ですが、「データ入力・訂正」ではこの画面子フォームを表示した後ファイル(又は新規)を選択しますので親ホームから子ホームを操作することになります。もっとスマートな方法がありましたらご指導のほどよろしくお願いいたします。

るきお 様
ありがとうございます。勉強がずいぶん進んだような気がします。
今後ともよろしくお願いいたします。

投稿者 るきお  (社会人) 投稿日時 2010/7/12 13:14:18
こんにちは。

大池さんのプログラムでしたら次のように書くこともできますよ。
この例ではMDI子フォームはForm2というクラス名です。

  
Dim child As Form2 = Me.ActiveMdiChild

child.Panel1.Enabled = True
child.ComboBox1.Text = "2010"


おっしゃられるように大池さんの書き方はちょっと面倒なので、
だいたいの人はこのように書いているのではないかと思っています。
投稿者 cupid  (その他) 投稿日時 2010/7/12 10:51:45
返答でないですが、── 素朴な疑問として、MDI を何に使うつもりでしょうか?
MDI と言うと、Photshopなど画像編集ソフトで、複数画像を同時に表示するとか、
または、Excel で、複数の xls ファイルを同時表示しているとか、そういう用途が
多いのでしょう。 何となく、情報表示板的な使い方が多いのでは? 確かに、
MDI 子フォームにもコントロールをつけ、操作できるようになっているようですが。
VB6時代に、MDI を使った事ありますが、親フォーム側の制約が多いと感じた為、
その後は、感心が薄れるようになりました。 あくまでも私自身の事情からです。
投稿者 大池  (社会人) 投稿日時 2010/7/9 15:12:17
いつもご指導をいただきありがとうございます。
XPでvb2008を勉強をしています。
MDI親ホームからMDI子ホームのコンボボックスに文字を挿入するために次のようなテストをしています。
MDI子ホームにPanel1、ComboBox1を張り付けましてMDI親ホームからつぎの操作をし、
一応期待通りの結果がでました。しかし、あまりにも回りくどいですが、これでいいのでしょうか?
他に例えばMy.???のような簡単な方法があるのではと期待しながらお尋ねする次第です。
それからPanel1の中に張り付けたコントロールを取得するにはどのようにすればいいのでしょうか?
ご教授のほどよろしくお願いいたします。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
        Dim actChild As Form = ActiveMdiChild
        For i As Integer = 0 To actChild.Controls.Count - 1
            'Debug.Print(i.ToString)
            Select Case actChild.Controls.Item(i).Name
                Case "Panel1"
                    Dim pnl As Panel = ActiveMdiChild.Controls(i)
                    pnl.Enabled = True
                Case "ComboBox1"
                    Dim cbo0 As ComboBox = ActiveMdiChild.Controls(i)
                    cbo0.Text = "2010"
             End Select
        Next
     End Sub