Esempio n. 1
0
        /// <summary>
        /// GEt fill screen rectangle
        /// </summary>
        /// <param name="wrapper">wrapper</param>
        /// <returns></returns>
        public static Rectangle GetFillScreenRectangle(FormWrapper wrapper)
        {
            Rectangle clientArea = wrapper.RectangleToClient(GetScreenClientRectangle(wrapper._host));

            int x1 = clientArea.Left;
            int x2 = clientArea.Right;
            int y1 = clientArea.Top;
            int y2 = clientArea.Bottom;

            for (int index = 0; index < wrapper.ControlsCount; index++)
            {
                Control control = wrapper.GetControlAt(index);
                if (control.Dock == DockStyle.None || control.Visible == false)
                {
                    continue;
                }

                if (control.Dock == DockStyle.Left)
                {
                    x1 = Math.Max(x1, control.Right);
                }
                else if (control.Dock == DockStyle.Right)
                {
                    x2 = Math.Min(x2, control.Left);
                }
                else if (control.Dock == DockStyle.Top)
                {
                    y1 = Math.Max(y1, control.Bottom);
                }
                else if (control.Dock == DockStyle.Bottom)
                {
                    y2 = Math.Min(y2, control.Top);
                }
            }

            if (x2 <= x1 || y2 <= y1)
            {
                return(new Rectangle());
            }

            Rectangle result = new Rectangle(x1, y1, x2 - x1, y2 - y1);

            return(wrapper.RectangleToScreen(result));
        }