別フォームを表示させる時、Application.Run(フォーム)で表示されたフォームを非表示にしたい


オーディス  2009-03-11 22:36:28  No: 141667

はじめまして。
今、VB2008で複数画面のあるプログラムを作っているのですが、
例えば、

・画面(フォーム)は、FormMain, FormSub1, FormSub2がある。
・Sub Main()内で、FormMainフォームを開く。
  (Mutexというものを使用している関係上、Sub Main内で、Application.Run(New FormMain)として開いています。)

とした場合、FormSub1, FormSub2の各フォームは、FormMain上のボタンをクリックすることにより
開くようにしたいと考えています。
このとき、FormSub1, FormSub2を開くとき、呼び出し元のFormMainを非表示にしたいのですが、
例えば以下のサイトの回答3のようにしてみてもうまく呼び出し元のFormMainが非表示になりません。
(FormMainもFormSub1も開いた状態になっている)

http://www.kotaete-net.net/Default.aspx?pgid=14&qid=240698380817

これはどのようにすれば呼び出し元フォームを非表示にすることができるでしょうか?
なにとぞよろしくお願いいたします。


アクア  URL  2009-03-12 18:40:51  No: 141668

アクアと申します。どうぞよろしくお願いします。

早速ですが例を示しますので参考にしてください。

FormMain
FormSub1
FormSub2
の3つのフォームを用意する。
FormMainにはButtonコントロールを2つ、FormSub1、FromSub2にはButtonを1つ配置する。

…FormMainのコードは以下の通り

Public Class FormMenu

    Public Shared Sub Main()
        Application.EnableVisualStyles()
        Application.DoEvents()
        Application.Run(New FormMenu)
    End Sub

    Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Button1.Click, Button2.Click

        Select Case DirectCast(sender, Button).Name ' どのButtonコントロールのイベントかButtonの名前に応じて分岐処理
            Case Button1.Name
                Dim frm1 As FormSub1 = New FormSub1
                frm1.Show(Me)
            Case Button2.Name
                Dim frm2 As FormSub2 = New FormSub2
                frm2.Show(Me)
        End Select
        Me.Visible = False
    End Sub
End Class

…FromSub1のコード(FormSub2も同じく記述)

Public Class FormSub1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) _
        Handles Me.FormClosing
        Me.Owner.Visible = True
    End Sub
End Class


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加