Размер / расположение клиентской зоны Winforms MDI - PullRequest
11 голосов
/ 02 марта 2009

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

Ответы [ 2 ]

20 голосов
/ 03 марта 2009

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

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

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

1 голос
/ 03 марта 2009

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