タイトル | : Re^3: form1からform2を開いたときに、form1を閉じたい |
記事No | : 2628 |
投稿日 | : 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
|