2009-03-02 14 views
10

Innerhalb eines MDI-Formulars befindet sich ein Clientbereich, der die mdi-untergeordneten Formulare hostet. Wie finde ich heraus, wie groß dieser Bereich ist? Das Beste, was mir bisher einfällt, ist die Ermittlung der Gesamtgröße des potenziellen Kundenbereichs des Elternteils (mdiparent.ClientRectangle) und das Subtrahieren der Größen von Komponenten wie Symbolleisten usw., die den Client-Bereich verlassen. Gibt es einen besseren Weg?Größe/Standort des Winforms MDI-Clientbereichs

Antwort

19

Es gibt keine Eigenschaft in einem Formular, die Ihnen Zugriff auf das MDI-Client-Fenster ermöglicht. Aber Sie können es wieder wie folgt finden:

public MdiClient GetMdiClientWindow() { 
    foreach (Control ctl in this.Controls) { 
    if (ctl is MdiClient) return ctl as MdiClient; 
    } 
    return null; 
} 

Von dort verwenden Sie einfach seine Size-Eigenschaft.

+1

Danke, das fantastisch gearbeitet. Aus irgendeinem Grund musste ich weitere 4 Pixel abziehen (wahrscheinlich für eine Rahmengrenze?), Aber damit kann ich leben. – Jeff

+3

@Jeff Verwenden Sie MdiClient.ClientSize, anstatt 4 Pixel zu subtrahieren –

1

Hier ist eine Variante dieser Code in vb.net:

Public Function GetMdiClientWindowSize() As Size 
    For Each ctl As Control In Me.MdiParent.Controls 
     If TypeOf ctl Is MdiClient Then 
      Return ctl.Size 
     End If 
    Next 
    Return Nothing 
End Function