• 締切済み

[VB]親画面と子画面の画面サイズ最小化について

VB2012でwindowsアプリの開発を行っております。 親フォームから子フォームをShowDialogで起動する画面があるのですが、 親フォームを最小化して、子フォームは通常サイズで表示させたいです。 以下のコードを実行すると、親と子の両画面が最小化されてしまいます。 どなたかご教授頂くと助かります。宜しくお願い致します。 ----------コード-------------- Private Sub 子フォーム起動_Click Me.WindowState = FormWindowState.Minimized Dim frm As New 子フォーム frm.ShowDialog(Me) frm.Dispose() End Sub

みんなの回答

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

次あたりが参考になりませんでしょうか。 要は、ShowDialogメソッドではなく、Showメソッドで開いて、元々のフォームはHideすればよいと思います。 その時にオーナーフォームを指定しておけば、子フォームを閉じるときにオーナーフォームを表示すればよいと思います。 http://www.oborodukiyo.info/Forms/VS2008/F-ManageOwnerForm http://www.kisoplus.com/bbs/index.php?res=35

rapport5683
質問者

お礼

お忙しい中、ご回答ありがとうございます。 参考にさせて頂きます。

関連するQ&A

  • VB.NET:モーダルで表示したフォームを最小化

    Form2をForm1の所有として、モーダルで表示しました。 '------------------------ Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdChildMdl.Click  'Form2を開く  Dim frmN As New Form2  frmN.ShowDialog(Me) 'MeはForm1 End Sub '------------------------ Form2が最小化された時に、親フォームであるForm1も最小化させたいと思い、 Form2のResizeメソッドに以下のようなコードを書きました。 '------------------------ Private Sub Form2_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize  Select Case Me.WindowState   Case FormWindowState.Minimized    '親フォームも最小化((1))    Me.Owner.WindowState = FormWindowState.Minimized   Case FormWindowState.Maximized    '親フォームも最大化((2))    Me.Owner.WindowState = FormWindowState.Maximized   Case FormWindowState.Normal    '親フォームも通常サイズ((3))    Me.Owner.WindowState = FormWindowState.Normal  End Select End Sub '------------------------ しかし、(2)、(3)は問題なく実行できるのですが、 (1)を実行すると、自フォーム(Form2)が閉じてしまうのです。 そういう仕様なのでしょうか? ご存知の方、教えてください。よろしくお願いします。

  • 3フォームの重なり順を変えない方法+同時最小化

     今晩は、質問させていただきます。どうぞよろしくお願いいたします。 Form1(メインフォーム)の下にForm2を、 Form2の下にForm3を表示し、これらの順番が変わらないように致したく、 次のようにコーディングいたしました。 【Form1のコード】  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load    Dim form2o As New Form2    Dim form3o As New Form3    Me.Owner = form2o    form2o.Show()  End Sub 【Form2のコード】  Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load    Dim form3o As New Form3    Me.Owner = form3o    form3o.Show()  End Sub  この状態のまま、タスクバー上のアプリケーション名をクリックした際の 最小化⇔普通化を(3フォームとも一緒に)させたいのですがうまくいきません。。  Form1に、下の【コード1】のようにコーディングいたしましたら、 タスクバーのForm1クリック(最小化) →3つとも最小化(成功)いたしますが、 Form1とForm2がタスクバー上から消えてしまい、Form1クリックによる最大化ができなくなります。  またForm3に、下の【コード2】のようにコーディングいたしましたら、 タスクバーのForm3をクリックしてもForm1が一回ちらつくだけで、最小化すらできません。。  まったく違うイベントを取る方法や、Owner指定方法自体を行わない方法でも結構でございますので、 何かこの動作をうまくできる方法はないでございましょうか?  ずっと悩んでおりますが、解決致しません。もしお詳しい方がいらっしゃいましたら, 是非ともアドバイスいただきたく、どうぞよろしくお願いいたします。 【コード1】   Public Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize     Dim form2o As New Form2     If Me.WindowState = FormWindowState.Minimized Then       Owner.WindowState = FormWindowState.Minimized       Owner.Owner.WindowState = FormWindowState.Minimized     ElseIf Me.WindowState = FormWindowState.Normal Then       Owner.WindowState = FormWindowState.Normal       Owner.Owner.WindowState = FormWindowState.Normal     End If   End Sub 【コード2】   Public Sub Form3_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize     If Me.WindowState = FormWindowState.Minimized Then       Form1.WindowState = FormWindowState.Minimized       Form2.WindowState = FormWindowState.Minimized     ElseIf Me.WindowState = FormWindowState.Normal Then       Form2.WindowState = FormWindowState.Normal       Form1.WindowState = FormWindowState.Normal     End If   End Sub  何卒お願いいたします。

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

    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

  • WindowState Minimized(最小)で起動したものを、事後的にコードを使って最大化

    画面を最小(WindowState Minimized)で起動したものを コードを使って最大化するには、 どのプロパティを使えばいいのでしょうか。 サーバー用ソフトなので、タスクバーには、 表示されないので、システムトレイにアイコンを おき、そこから、画面を表示できるようにしたい のです。 (C#を使っていますが、VBでも大体同じに出来るの で、お願いします)。

  • VB2008で親フォームから子フォームを開いたときの処理で

    VB2008で親フォームから子フォームを開いたときの処理で 質問させて頂きます。 親フォームから子フォームを開いて、 子フォーム画面ロード時に、TreeViewにノードを追加する処理を行おうとするのですが、 ノードの追加ができません。 親フォームから子フォームの呼び出しの部分 Using frmAct As New form2 frmAct.ShowDialog() end using 子フォームLoad処理 Private Sub F_Actresult_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call MP_hogeload() ←別のモジュールからサブルーチンを呼び出してノード処理を追加させる。 End Sub 外部サブルーチン Public Sub MP_hogeload() With form2 .trehoge.Nodes.Add("hoge") end with end sub 同じ子フォーム内に記述している場合は問題なく追加できています。 この開き方の場合、別のモジュールでノードを追加させる方法を探しています。 よろしくお願いいたします。

  • CloseとDisposeの違い

    みなさまこんばんわです。よろしくお願い申し上げます。 VB.NET 2008でコーディングしています。 CloseとDisposeの違いについて教えていただきたいのです。 これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。 たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、タイマーコントロールのイベントに記述していますと、それは実行され続けます。 これを防ぐために、Me.Dispose() を使います。すると、きれいにプロセスは終了し、イベントは発生しない模様です。 そこで、「フォームを閉じる」意味のMe.Close() をすべてMe.Dispose() に変えてしまいました。確実にプロセスを破棄出来ると思ったからです。Webで調べると、違いは「再利用できる、できないの違い」という答えがありましたが、それはきっと、ファイルやオブジェクトのことで、フォームの場合は、再びShowまたはShowDialogで表示させることは可能でしたので、特に問題は感じていませんでした。 ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。Me.Close() に変えるとうまくいきました。 わけわからなくなってきました。。。 ちなみに、その残ったフォームは、スタートアップフォームであり、別のフォームからShowまたはShowDialogメソッドで呼び出したものではありません。 ここで4つの仮説を立ててみました。 1. ShowDialogで呼び出したフォームは、Me.Dispose()、Showで呼び出した、あるいは、スタートアップフォームは、Me.Close() すれば破棄できる 2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる 3. 呼び出し方ではなく、別の要因が存在する 4. 併記する必要がある場合がある Me.Close() Me.Dispose() または、 Me.Dispose() Me.Close() どれが正しいのでしょうか?どなたがご存じの方がいらっしゃいましたら、ご教授いただけませんでしょうか? どうぞよろしくお願い申し上げます。ありがとうございました。

  • [VB6]オーナーウィンドウを設定したShowメソッド

    こんにちは。 XP(SP2),VB6(SP6)で 親フォーム -> 子ダイアログ -> 孫ダイアログを表示する処理を作成し実行すると、 子ダイアログを閉じた際、親フォームが他のアプリケーションの下 にもぐってしまいます。 (例えばメモ帳上で実行して、子ダイアログを閉じた時にメモ帳の下に隠れてしまう、デバッグ時ならばVBの下に隠れる) 孫ダイアログを表示させずに、子を閉じるとこの様に減少は起こりません。 なぜこの様になるのでしょうか? 又、回避策はあるでしょうか?ご存じの方、教えてください。 以下、現象再現用のテストプログラムです。 親フォーム Private Sub Command1_Click() dlg1.Show vbModeless, Me End Sub 子ダイアログ(dlg1) Private Sub Command1_Click() dlg2.Show vbModal, Me End Sub Private Sub CancelButton_Click() Unload Me End Sub 孫ダイアログ(dlg2) Private Sub CancelButton_Click() Unload Me End Sub

  • VB2008でMDIフォームを使用した時の不具合

    お世話になります。 VB2008でMDI親フォームから 子フォームを表示して子フォーム内のイベントから クラスモジュールを生成してフォーム内のリストに 表示処理を行っているのですが、クラスは確かに 呼ばれているのですが子フォーム内のリストに データが表示されません。 親フォームに Me.IsMdiContainer = True FRM = New FRMZIP With FRM .MdiParent = Me .Show() End With 以外に子フォームのオブジェクト定義が 必要なのでしょうか? VBは6.0以降殆ど実務では経験ありません。 宜しくお願いいたします。 PS 子フォームを単体で起動すると普通に 動作します。

  • [VB6] フォームを閉じる方法について

    お世話になります。 VB6で別フォームを起動する際の親フォームの閉じ方について 質問させてください。 呼び出し元フォームからShowメソッドで別フォームを起動すると、 呼び出し先のフォームでマウスのカーソルが砂時計表示になってしまいます。 (呼び出し元のフォームはUnload Meで閉じています。) [Form1の処理] Private Sub Button1_Click() Form2.Show Unload Me End Sub ※Form1は呼び出し元。Form2は呼び出し先。 原因について、どなたかご存知の方がいらっしゃいましたら、 ご教授願えますか?

  • VB6.0で、フォームの表示位置を画面左上にしたいのですが。

    VB6.0で、フォームの表示位置を画面左上にしたいのですが、以下コードの「StartUpPosition」でエラーがでます。 コードが対応していないのでしょうか? ご存知の方教えてください。よろしくおねがいします。 Private Sub Form_Load() Me.Picture2.BackColor = vbWhite \'グラフ背景色 Me.StartUpPosition = 3 \'フォームを左上に表示 End Sub

専門家に質問してみよう