はじめまして。
今、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
これはどのようにすれば呼び出し元フォームを非表示にすることができるでしょうか?
なにとぞよろしくお願いいたします。
アクアと申します。どうぞよろしくお願いします。
早速ですが例を示しますので参考にしてください。
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