2012-10-10 7 views
5

私のmdi子にカスタム境界を作成しました。 MDI子フォームのプロパティ:MDI子は、WindowStateが最大化されている場合にのみ表示されます。

  • FormBorderStyle =なし
  • Controlbox = Falseの
  • テキスト= "私はのWindowStateセットのプロパティを持っていた"
  • のWindowState =最大化

まず、ノーマルにすると、私のmdiの子はappaerしません、私はそれが0のサイズを持っていると思います。 Form_Loadメソッドでサイズを設定しようとしましたが、何も変更されませんでした。 FormBorderStyleをFixedSingleに変更したとき、タイトルバーをダブルクリックするのに十分なスペースを持つ非常に小さなフォームしか表示されませんでした。その後、フォームが実際に最大化されました。

私はもう理解しません。これはすべて非常に混乱しています。 とのWindowStateが最大化されているので、私はそれが最大だと考えているので、画面の周りのフォームをドラッグする機能を使用することはできません....あなたが書かれている

enter image description here

+2

ものは、MDI子ウィンドウのための有効なプロパティではありません、それは*必須*サイズ変更可能な境界線を持っています。 WinFormsは例外をスローすることを忘れてしまいます。 –

答えて

0

「のWindowState =が最大化」。
親フォームが最大化されている場合にのみ、MDIフォームが表示される可能性があります。
"WindowState = Normal"と書いてください。Form_Loadに "MDIForm.Size = ParentForm.Size"または(そのようなもの)を書いてください。

0

すると、このコードを試してみてください - 動作が保証:

Public frmContainer As FormContainer 
Public frmChild As FormChild 

Public Sub OpenfrmChild() 
    If Not IsNothing(frmChild) AndAlso frmChild.Visible = False Then 'This applies after form has been closed 
     frmChild = Nothing '(frmChild does not test as nothing after being closed) 
     frmChild = New FormChild 
     frmChild.MdiParent = frmContainer 
     frmChild.Show() 
    ElseIf IsNothing(frmChild) Then 'This applies the first time form is opened 
     Try 
      frmChild = New FormChild 
      frmChild.MdiParent = frmContainer 
      frmChild.Show() 
     Catch ex As Exception 
      ErrorMsg(ex.Message() & "Description: " & ex.ToString) 
     End Try 
    Else 'This applies if form is visible and user clicks the button on FormChild again 
     frmChild.BringToFront() 
    End If 
    frmChild.WindowState = FormWindowState.Maximized 
    frmChild.Dock = DockStyle.Fill 
End Sub