• ベストアンサー

最小化したフォームを元に戻す

VB2005Expressにて開発を行っています。 最小化したフォームを元に戻せなくて困っています。 どなたかご存知の方がいらっしゃいましたらご教授願います。 下記の動作を実現したいと思っています。 ・Form1でボタンが押されたらForm2を表示する ・この際にForm1を最小化する ・Form2を閉じる ・この際にForm1を元に戻す(手前に表示する) 以下が作成したプログラムです。 ---モジュールにて下記を宣言 Module Module1 'オブジェクトの宣言 Public f1 As New Form1 Public f2 As New Form2 End Module ---Form1でForm2を開くボタンを押した場合の処理 Private Sub Button1_Click(ByVal sender~ 'Form2を表示 If f2 Is Nothing OrElse f2.IsDisposed Then f2 = New Form2 End If f2.Show() 'Form1を最小化する Me.WindowState = FormWindowState.Minimized End Sub ---Form2にて閉じるボタンを押した場合 Private Sub Button4_Click(ByVal sender~ f1.WindowState = FormWindowState.Normal ↑コレで実現できるかと思ったのですが、最小化されたままです・・・ End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

VB2005以降の場合 f1,f2などのオブジェクトは不要になりました Form1、Form2などをインスタンスとして使えます Global.プロジェクト名.My.Formsに Form1やForm2が格納されておりこれを検索してくれます Form1の Button1_Clickは Form2.Show() WindowState = FormWindowState.Minimized とするだけでいいようです Disposeされていても問題なく起動します Form2のButton4_Click側も Form1.WindowState = FormWindowState.Normal といった具合で動作しますよ

madamadahiyoko
質問者

お礼

教えていただいた通り、Form1.WindowState = FormWindowState.Normal で上手くいきました。 すごく助かりました。ありがとうございました。

その他の回答 (2)

回答No.2

form2にform1のインスタンスを渡しておいて、form2を閉じるときにform2にあるform1インスタンスに対して画面サイズを元に戻すように処理を記述すればOK。

madamadahiyoko
質問者

お礼

Form1.WindowState = FormWindowState.Normal としたら上手くいきました。 丁寧に回答していただきありがとうございました。

noname#259269
noname#259269
回答No.1

プロジェクトのプロパティで、 アプリケーションフレームワークをOFFにし、かつ Module1 の Sub Main から起動するように設定していますか? そうでなければ、画面に表示されている Form1 と、f1 がそれぞれ別のオブジェクトになっているのだと思います。 仮にそうであるなら、Module1 の f1 でオブジェクトを New するのは無駄なので、 ---Module1--- Public f1 As Form1 ---Form1のLoadイベント--- Module1.f1 = Me とすれば動くと思います。

madamadahiyoko
質問者

お礼

Form1.WindowState = FormWindowState.Normal としたら上手くいきました。 丁寧に回答していただきありがとうございました。