C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

子フォームを開いた時には親フォームは閉じるには  

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■93878 / inTopicNo.1)  子フォームを開いた時には親フォームは閉じるには  
  
□投稿者/ くま (1回)-(2020/02/16(Sun) 18:29:58)

分類:[VB.NET/VB2005 以降] 

2020/03/25(Wed) 09:29:41 編集(投稿者)
お世話になります。

下記にては、親フォームForm1の中には子フォームForm2が開くのですが、
これを、子フォームForm2が開いた時には親フォームForm1は閉じ、子フォームForm2が閉じた時には再び親フォームForm1は開く。

このようにするにはどのようにすべきなのでしょう?
よろしくお願いします。

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.SetBounds(0, 0, 1000, 800, BoundsSpecified.All)
        'このフォームを MDI コンテナとして設定 
        Me.IsMdiContainer = True
    End Sub

    '子フォーム Test1を開く
    Private Sub Test1ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles Test1ToolStripMenuItem.Click
        Dim frmchild As New Form2
        frmchild.MdiParent = Me
        frmchild.Show()
    End Sub
End Class

Public Class Form2
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.SetBounds(300, 100, 500, 200, BoundsSpecified.All)
    End Sub

    'このフォームを閉じる
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.Close()
    End Sub
End Class

引用返信 編集キー/
■93880 / inTopicNo.2)  Re[1]: 子フォームを開いた時には親フォームは閉じるには
□投稿者/ KOZ (83回)-(2020/02/16(Sun) 21:10:10)
No93878 (くま さん) に返信
> これを、子フォームForm2が開いた時には親フォームForm1は閉じ、子フォームForm2が閉じた時には再び親フォームForm1は開く。

MDI では実現できません。
こんな感じにしてみてはいかがでしょうか。

Public Class Form1

    Private WithEvents _Form2 As Form2

    Private Sub ToolStrip1_ItemClicked(sender As Object,
                                    e As ToolStripItemClickedEventArgs) _
                                    Handles ToolStrip1.ItemClicked
        _Form2 = New Form2()
        _Form2.Show()
    End Sub

    Private Sub _Form2_Shown(sender As Object, e As EventArgs) _
                                    Handles _Form2.Shown
        Me.Visible = False
    End Sub

    Private Sub _Form2_FormClosed(sender As Object, e As FormClosedEventArgs) _
                                    Handles _Form2.FormClosed
        _Form2 = Nothing
        Me.Visible = True
    End Sub

End Class


引用返信 編集キー/
■93881 / inTopicNo.3)  Re[2]: 子フォームを開いた時には親フォームは閉じるには
□投稿者/ くま (2回)-(2020/02/16(Sun) 23:11:37)
No93880 (KOZ さん) に返信

Public Class Form1

    Private WithEvents _Form2 As Form2

    Private Sub ToolStrip1_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ToolStrip1.ItemClicked
        _Form2 = New Form2()
        _Form2.Show()
    End Sub

    Private Sub _Form2_Shown(sender As Object, e As EventArgs) Handles _Form2.Shown
        Me.Visible = False
    End Sub

    Private Sub _Form2_FormClosed(sender As Object, e As FormClosedEventArgs) Handles _Form2.FormClosed
        _Form2 = Nothing
        Me.Visible = True
    End Sub

End Class

ありがとうございます。
これで合ってるでしょうか?
ToolStrip1 の部分で下記のエラーが出てもしまいます。

また、_Form2 = New Form2() などの前にある _ の意味も教えていただけますか?


> エラー BC30506	Handles 句には、それを含む型または基本型の 1 つで定義された WithEvents 変数が必要です。







引用返信 編集キー/
■93882 / inTopicNo.4)  Re[3]: 子フォームを開いた時には親フォームは閉じるには
□投稿者/ KOZ (84回)-(2020/02/17(Mon) 08:55:18)
No93881 (くま さん) に返信
> ToolStrip1 の部分で下記のエラーが出てもしまいます。

ToolStrip1 でなくて Test1ToolStripMenuItem なのでは?


> また、_Form2 = New Form2() などの前にある _ の意味も教えていただけますか?
意味はありません。
引用返信 編集キー/
■93907 / inTopicNo.5)  Re[4]: 子フォームを開いた時には親フォームは閉じるには
□投稿者/ くま (3回)-(2020/02/17(Mon) 19:29:29)
No93882 (KOZ さん) に返信

ありがとうございます。

@ Private Sub ToolStrip1_ItemClicked(sender As Object,
e As ToolStripItemClickedEventArgs) _
Handles ToolStrip1.ItemClicked

A Private Sub ToolStrip1_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ToolStrip1.ItemClicked

最初に教えていただいたのが@でしたので、Aのようになるのではないでしょうか?
いずれにしても下記に入れ替えても上手くは行きませんでした。

> ToolStrip1 でなくて Test1ToolStripMenuItem なのでは?






引用返信 編集キー/
■93908 / inTopicNo.6)  Re[5]: 子フォームを開いた時には親フォームは閉じるには
□投稿者/ KOZ (85回)-(2020/02/17(Mon) 20:40:00)
No93907 (くま さん) に返信

   '子フォーム Test1を開く
    Private Sub Test1ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles Test1ToolStripMenuItem.Click
        Dim frmchild As New Form2
        frmchild.MdiParent = Me
        frmchild.Show()
    End Sub

最初に提示されたコードがこうなってますので、中身を

        _Form2 = New Form2()
        _Form2.Show()

に入れ替えればよいはずですけど。

引用返信 編集キー/
■93909 / inTopicNo.7)  Re[6]: 子フォームを開いた時には親フォームは閉じるには
□投稿者/ くま (4回)-(2020/02/17(Mon) 22:31:19)
2020/03/25(Wed) 09:33:34 編集(投稿者)
もう少し考えてみます。



引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ