/// <summary> /// в зависимости от того, показана или спрятана панель инструментов, масштабировать окошки /// </summary> private void ScaleChildrenToNewSize() { var rectWoPanel = new Rectangle(ClientRectangle.Left, ClientRectangle.Top, ClientRectangle.Width, ClientRectangle.Height - panelStatus.Height); var rectWithPanel = new Rectangle(rectWoPanel.Left + (panelNavi.Visible ? panelNavi.Width : 0), rectWoPanel.Top, rectWoPanel.Width - panelNavi.Width, rectWoPanel.Height); var rectBefore = panelNavi.Visible ? rectWoPanel : rectWithPanel; var rectAfter = !panelNavi.Visible ? rectWoPanel : rectWithPanel; var relSize = MdiChildren.ToDictionary(w => w, w => new RectangleF( (w.Left - rectBefore.Left) / (float)rectBefore.Width, (w.Top - rectBefore.Top) / (float)rectBefore.Height, w.Width / (float)rectBefore.Width, w.Height / (float)rectBefore.Height)); foreach (var pair in relSize) { var left = pair.Value.Left * rectAfter.Width; var top = pair.Value.Top * rectAfter.Height; var width = pair.Value.Width * rectAfter.Width; var height = pair.Value.Height * rectAfter.Height; pair.Key.Location = new Point(Convert.ToInt32(left), Convert.ToInt32(top)); pair.Key.Size = new Size(Convert.ToInt32(width), Convert.ToInt32(height)); } }