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