tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル呼び出し元フォーム(インスタンス)の特定方法
記事No9581
投稿日: 2009/11/14(Sat) 00:19
投稿者たかし

(1) 2つのフォーム Form1 と Form2 があります。
(2) Form1 には1つのボタン Button1 (次画面表示ボタン)があります。
(3) Button1 をクリックすると
    Form2 が表示され、 Form1 は非表示となります。
(4) Form2 には1つボタン Button2 (戻るボタン)があります。
(5) Button2 をクリックすると
    Form2 を閉じ、 Form1 を表示します。

上のような処理を行いたいのですが、
下の ???????? の部分に
どのように記述すれば良いのか分かりません。

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) _
                              Handles Button1.Click
        'Form2 のインスタンス作成
        Dim f As New Form2
        'Form2 表示
        f.Show()
        'Form1 非表示
        Me.Visible = False
    End Sub
End Class

Public Class Form2
    Private Sub Button2_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) _
                              Handles Button2.Click
        'Form2 終了
        Me.Close()
        'Form1 再表示
        ?????????????
    End Sub
End Class

Form1.Visible = True ではダメですよね?
どうかご教授下さい。
よろしくおねがいいたします。

[Visual Basic 2008]

[ツリー表示へ]
タイトルRe: 呼び出し元フォーム(インスタンス)の特定方法
記事No9582
投稿日: 2009/11/14(Sat) 00:46
投稿者Hongliang
> Form1.Visible = True ではダメですよね?
「既定のインスタンス」によって大丈夫そうな気もしますけど、まあ勧められたものではないですね。

・Form2 に Form 型のプロパティ PreviousForm みたいなのを用意して、Form1 が Form2 を New したときに Me を設定する。Form2 は Close 時にそれを Show する。
・Form1 の方で、Form2 の FormClosed イベントに自分を Show するイベントハンドラを登録する。
などが考えられます。

// Button2 のクリック以外でフォームが閉じられたらどうするんだろう?

[ツリー表示へ]
タイトルRe: 呼び出し元フォーム(インスタンス)の特定方法
記事No9583
投稿日: 2009/11/14(Sat) 13:14
投稿者魔界の仮面弁士
実装例を挙げておきます。

この場合、Form1 の操作は Form1 自身に任せる事になります。
一方 Form2 側は、自身がどこから呼び出されたかを意識しませんので、
他のフォームから呼び出された場合でも、Form2 のコードは変化しません。


Public Class Form1
    Private Sub Button1_Click() Handles Button1.Click
        Dim f As New Form2()
        f.Show()
        AddHandler f.FormClosing, AddressOf Form2_FormClosing
        Me.Hide()
    End Sub
    Sub Form2_FormClosing()
        Me.Show()
    End Sub
End Class


Public Class Form2
    Private Sub Button2_Click() Handles Button2.Click
        Me.Close()
    End Sub
End Class

[ツリー表示へ]