dポイントプレゼントキャンペーン実施中!

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)が閉じてしまうのです。

そういう仕様なのでしょうか?
ご存知の方、教えてください。よろしくお願いします。

A 回答 (1件)

ShowDialogの仕様かどうかは知らないけど、やってみたら、勝手に「閉じるイベント」が発生しました。


しっかり調べてないのでわからないけど、「仕様」と判断しちゃいました。

そこで
「ShowDialog」
っぽい動きを作成しました。

ShowDialogで実現できないときに、参考になれば幸いです。


'-----------------------------------------------
'イベント/クリック[cmdChildMdl]
Private Sub cmdChildMdl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdChildMdl.Click
  'Form2を開く
  Dim frmN As New Form2()

  '親子の縁組
  Me.AddOwnedForm(frmN)

  '普通に表示
  frmN.Show()

  '自分を操作させないために、使用不可能
  Me.Enabled = False
End Sub

'-----------------------------------------------
'イベント/サイズ変更時
Private Sub Form2_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
  '親と子のWindowStateの同期
  Me.Owner.WindowState = WindowState

  '操作不能に陥らないように、最小化時は、親を使用可能状態にする
  Me.Owner.Enabled = (WindowState = FormWindowState.Minimized)
End Sub

'イベント/閉じる時
Private Sub Form2_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
  '親を使用可能状態
  Me.Owner.Enabled = True

  '親子の離縁
  Me.Owner.RemoveOwnedForm(Me)
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
実は、1050YENさんと同じことを自分でも考えてみたのです。
でも、そうすると、親フォームのコントロールの外観が使用不可状態になってしまいますよね・・・
親と子のフォームサイズを連動させることが不可能ならば、親は常に最小化のままにしてしまおうか・・・とも考えています。

お礼日時:2005/07/05 10:34

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