2012-10-10 10 views
5

Ho creato un bordo personalizzato per il mio figlio mdi. Mdi proprietà del modulo bambino:Il figlio MDI è visibile solo quando WindowState è ingrandito

  • FormBorderStyle = Nessuno
  • Controlbox = False
  • text = ""
  • WindowState = massimizzata

In primo luogo, quando ho avuto la proprietà di Windowstate set a Normale, il mio bambino mdi non sarebbe appaer, suppongo che abbia una dimensione di 0; 0 allora. Ho provato ad impostare la dimensione nel metodo Form_Load, ma ancora nulla è cambiato. Quando ho cambiato FormBorderStyle in FixedSingle, ho potuto vedere una forma molto piccola con lo spazio appena sufficiente per fare doppio clic sulla barra del titolo. Quindi la forma è veramente massimizzata.

Non capisco più, questo è tutto molto confuso. E poiché il WindowState è massimizzata non posso usare le funzioni per trascinare la forma intorno allo schermo, perché pensa che sia massimizzata ....

enter image description here

+2

Quelli non sono proprietà valide per una finestra di figlio MDI, si * deve * avere un bordo ridimensionabile. Winforms si dimentica di lanciare un'eccezione. –

risposta

0

Lei ha scritto "WindowState = massimizzata".
Forse a causa di questo si vede solo il modulo MDI quando viene ingrandita la forma genitore.
Si consiglia di scrivere "WindowState = Normal" e in Form_Load scrivere "MDIForm.Size = ParentForm.Size" o (qualcosa del genere).

0

Prova questo codice - garantito il funzionamento:

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