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
10
A
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
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
Danke, das fantastisch gearbeitet. Aus irgendeinem Grund musste ich weitere 4 Pixel abziehen (wahrscheinlich für eine Rahmengrenze?), Aber damit kann ich leben. – Jeff
@Jeff Verwenden Sie MdiClient.ClientSize, anstatt 4 Pixel zu subtrahieren –