子フォームから子フォームへ操作したい への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 ラオシス  (中学生)
投稿日時
2011/12/11 20:29:06
すでに答えは出ていますが、普通はForm1.Show()などとインスタンスを作成せずに
フォームにアクセスすることはあまりよくありません。
Form1
Form2
急ぎでかいたのでもしかしたら動かないかもしれませんが、それも学習と思って修正してみては?
第29回 2つ目のフォーム
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard29.htm
質問するときはどうやったらできたかというものも報告してくださいね。後々、同じことでわからなくなった方にも参考になりますので。
フォームにアクセスすることはあまりよくありません。
'×
Form1.ShowDialog()
'○
Dim InstForm1 As New Form1
InstForm1.ShowDialog()
Form1
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim InstForm2 As New Form2
Dim InstForm3 As New Form3
'ここでForm3がForm2でも操作できるようインスタンスを渡します
InstForm2.Show(InstForm3)
InstForm3.Show()
End Sub
End Class
Form2
Public Class Form2
'Form1にあるInstForm3のコピーを格納する
Private InstForm3 As Form3
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
Handles Button1.Click
Me.InstForm3.Close()
End Sub
'Form2から操作できるようForm3のインスタンスが渡されます。
Public Overloads Sub Show(ByVal Form3 As Form3)
Me.InstForm3 = Form3
'自分(Form2)を表示します
Me.Show()
End Sub
End Class
急ぎでかいたのでもしかしたら動かないかもしれませんが、それも学習と思って修正してみては?
第29回 2つ目のフォーム
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard29.htm
質問するときはどうやったらできたかというものも報告してくださいね。後々、同じことでわからなくなった方にも参考になりますので。
投稿者 bz9  (中学生)
投稿日時
2011/12/11 18:54:23
こんな感じでしょうか
Form1
Form2
Form1
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Form2.Show()
Form3.Show()
End Sub
End Class
Form2
Public Class Form2
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
Handles Button1.Click
Form3.Close()
End Sub
End Class
投稿者 VB中学生  (学生)
投稿日時
2011/12/11 17:05:24
Form1という親フォームがあって、Form2、Form3という子フォームがあるとします。
そしてForm2にあるボタンを押すと、Form3を消すという操作をしたいのですが、
調べても子フォームから親フォームへの操作方法くらいしかありませんでした。
どなたか教えて下さい。
そしてForm2にあるボタンを押すと、Form3を消すという操作をしたいのですが、
調べても子フォームから親フォームへの操作方法くらいしかありませんでした。
どなたか教えて下さい。
この場合,考えることがほとんどないので楽なのですが……。
# 普通に,ボタンのハンドラでフィールドとして持っているであろうForm3を閉じればよいので。
Form3もForm1の子Form扱いである必要があるのであれば,
個人的にはForm2がForm3を弄るのは不思議な感じがします。
このため,Form2にイベントを用意して,Form2のボタンを押すとそのイベントが発生し,
そのイベントをForm1でハンドルしてForm3を閉じる,というのが個人的には綺麗だと思います。