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

StackOverflow https://stackoverflow.com/questions/603788

Вопрос

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

Это было полезно?

Решение

В форме нет свойства, которое предоставляло бы вам доступ к окну клиента 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top