Размер/расположение Winforms MDI Client Area

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

Ответ 1

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

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

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

Ответ 2

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