2012-10-10 18 views
5

Zrobiłem niestandardową ramkę dla mojego dziecka mdi. MDI Właściwości formularza dziecko:Dziecko MDI jest widoczne tylko wtedy, gdy WindowState jest zmaksymalizowane

  • FormBorderStyle = None
  • Controlbox = False
  • Text = ""
  • WindowState = Zmaksymalizowana

Po pierwsze, kiedy miałem własność zestaw WindowState do Normal, moje dziecko mdi nie brałoby aportowania, domyślam się, że ma rozmiar 0; 0. Próbowałem ustawić rozmiar w metodzie Form_Load, ale wciąż nic się nie zmieniło. Po zmianie FormBorderStyle na FixedSingle mogłem zobaczyć bardzo mały formularz z wystarczającą ilością miejsca, aby dwukrotnie kliknąć pasek tytułu. Wtedy forma naprawdę zmaksymalizowana.

Po prostu już nie rozumiem, to wszystko jest bardzo mylące. A ponieważ WindowState jest zmaksymalizowane Nie mogę korzystać z funkcji przeciągnij formę wokół ekranu, ponieważ uważa, że ​​to maksymalne ....

enter image description here

+2

To nie są ważne właściwości dla okna potomnego MDI, to * musi * mieć obramowanie zmienny rozmiar. Winformy zapominają rzucić wyjątek. –

Odpowiedz

0

Napisałeś „WindowState = Zmaksymalizowana”.
Może z tego powodu widzisz tylko formularz MDI, gdy forma nadrzędna jest zmaksymalizowana.
Polecam pisać "WindowState = Normal", aw Form_Load napisz "MDIForm.Size = ParentForm.Size" lub (coś w tym stylu).

0

Spróbuj tego kodu - gwarantowane do pracy:

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