プロが教えるわが家の防犯対策術!

プログラミング初心者でVB.NET2003使用です。
検索したところ、それらしいものがあったのでチャレンジしましたがダメだった(ちょっと違う?)ので質問させていただきます。
http://oshiete1.goo.ne.jp/qa1757174.html

《やりたい事》
Form1に配置したボタン1をクリックするとForm1を閉じてForm2を表示
Form2に配置したボタンAをクリックするとForm2を閉じてForm1を表示する。

これをやりたいのですが、なかなかうまく行きません。

ボタン1をクリックしてForm1を閉じないでForm2をShowかShowDialogでモードレス表示
ボタンAをクリックしてForm2をCloseさせてForm1を表示させる事(元々閉じていないので)は出来ます。

可能ならばどちらかを必ず閉じる方法でやりたいと思います。
可能でしょうか?
解決策やヒント、良いサイトがありましたら回答をお願いします。

A 回答 (2件)

Sub Mainでやるのは #1と同じですが オブジェクト『フォーム』の管理をModule1でやってみてはいかがですか



Module1に
  Dim oForm1 as Form1
  Dim oForm2 as Form2
  Sub Main
    ' Form1を表示
    oForm1 = new Form1
    oForm1.Show()
    Do While TRUE
      if oForm1.IsDisposed then
        ' Form1が閉じられた場合
        if oForm2 is Nothing then
          ' Form2が一度も表示されなかった場合
          Exit Sub
        else if oForm2.IsDisposed then
          ' Form2が1回以上表示された場合
          Exit Sub
        end if
      end if
      Application.DoEvents()
    Loop
  End Sub

フォーム1上のボタンイベント
if oForm2 is Notrhing OrElse oForm2.isDisposed then
  oForm2 = new Form2
end if
oForm2.Show()
me.Close()

フォーム2上のボタンイベント
if oForm1 is Notrhing OrElse oForm1.isDisposed then
  oForm1 = new Form1
end if
oForm1.Show()
me.Close()

といった具合で …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
上から読んで流れが理解できたので、今スグにでも使えそうです。
1つの方法として試してみたいと思います。

お礼日時:2007/11/26 23:38

モジュールから実行開始するのはどうでしょうか?



まず、プロジェクト->[プロジェクト名]のプロパティ 
の、スタートアップの設定 で「sub Main」を選ぶ。

ファイル->新しい項目の追加 で、モジュールを追加
Module Module1
Sub main()
Dim f1 As New Form1
f1.Show()
Do
Application.DoEvents()
Loop
End Sub
End Module
とする。

form1のButton1クリックを
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f2 As New Form2
f2.Show()
Me.Close()
End Sub
とする。

form1のButtonAクリックを
Private Sub ButtonA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonA.Click
Dim f1 As New Form1
f1.Show()
Me.Close()
End Sub
とする。

こんなのではどうでしょうか?

ただし、このままでは終了できないので、form1にbutton2を作って、
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Application.Exit()
End
End Sub
とかにして、終了するようにしてあげる。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!