Размер / расположение клиентской зоны 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
Другие вопросы по тегам