Размер / расположение клиентской области Winforms MDI

внутри формы MDI находится клиентская область, в которой размещаются дочерние формы mdi. Как узнать, насколько велика эта область? Лучшее, что я могу придумать, это найти общий размер потенциальной клиентской области родителя (mdiparent.ClientRectangle), а затем вычитание размеров компонентов, таких как панели инструментов и т. д., которые удаляются из клиентской области. Есть ли лучший способ?

2 ответов


в форме нет свойства, которое дает вам доступ к окну клиента MDI. Но вы можете найти его обратно так:

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

оттуда просто используйте его свойство Size.


вот вариант этого кода в 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