タイトル : Re^3: form1からform2を開いたときに、form1を閉じたい 投稿日 : 2005/11/24(Thu) 09:49 投稿者 : なおこ(・∀・)
お世話になります。 > 上記の内容で試してみたのですが、Form2を閉じたときにForm1が残っているので、 > うまく終了することができません。 > また、Form2からForm3を表示したりもします。 > > Form1からForm2を表示してForm1を非表示にせずに閉じることは出来ないのでしょうか。 色々方法はあるかと思いますが、 例えば、 こんな方法とか hhttp://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=13820&rev=&no=0 こんな方法で、アプリケーションの中で使うFormをコレクションで管理するとか、 hhttp://support.microsoft.com/default.aspx?scid=kb;ja;JP308537 ↓こんな方法とかありますが。 (↓のコードは例外処理とかオブジェクトの破棄を保障する事とか 一切考慮していませんのであしからず) ■Form1(スタートアップ) Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " '略 #End Region Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Dim f2 As Form2 f2 = New Form2(Me) f2.Show() Me.Hide() End Sub End Class ■Form2 Public Class Form2 Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " Private Sub New() MyBase.New() ' この呼び出しは Windows フォーム デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後に初期化を追加します。 End Sub '略 #End Region Private m_owner As Form Public Sub New(ByVal owner As Form) Me.New() Me.m_owner = owner End Sub Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Button1.Click Me.Close() Me.Dispose() If MessageBox.Show("アプリケーションを終了しますか", _ "", _ MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = DialogResult.Yes Then If Not Me.m_owner Is Nothing Then Me.m_owner.Close() Me.m_owner.Dispose() Application.Exit() End If Else Me.m_owner.Show() End If End Sub End Class |