示例#1
0
        public void DockControl(int panelIndex, int index, DockingType direction)
        {
            if (direction == DockingType.Floating)
            {
                throw new ArgumentException("Can't dock to a docking type of floating");
            }
            else
            {
                bool autoHide  = this.AutoHide;
                bool cancelled = this.Cancelled;

                if (this.AutoHide)
                {
                    this.AutoHide = false;
                }

                this.Cancelled = false;

                DockControlContainerCollection panels    = DockControlContainerCollectionHelpers.GetCollection(_manager, direction);
                DockControlContainer           container = panels[panelIndex] as DockControlContainer;

                container.DockControl(this, container.DockedControlList.Count, index);

                RemoveFloatingForm();

                this.AutoHide  = autoHide;
                this.Cancelled = cancelled;
            }
        }
示例#2
0
 private void LayoutControls(DockControlContainerCollection container)
 {
     for (int index = 0; index < container.Count; index += 1)
     {
         DockControlContainer control = container[index] as DockControlContainer;
         control.SendToBack();
     }
 }
示例#3
0
        private void InitializeControls()
        {
            _leftDockControlContainers   = new DockControlContainerCollection(this, DockStyle.Left, _leftMenuStrip, _toolStripRenderer);
            _rightDockControlContainers  = new DockControlContainerCollection(this, DockStyle.Right, _rightMenuStrip, _toolStripRenderer);
            _topDockControlContainers    = new DockControlContainerCollection(this, DockStyle.Top, _topMenuStrip, _toolStripRenderer);
            _bottomDockControlContainers = new DockControlContainerCollection(this, DockStyle.Bottom, _bottomMenuStrip, _toolStripRenderer);

            LayoutControls();
        }
示例#4
0
        private DockControlContainer GetContainerAtPoint(DockControlContainerCollection containers, Point point)
        {
            foreach (DockControlContainer container in containers)
            {
                if (container.Visible && container.Bounds.Contains(point))
                {
                    return(container);
                }
            }

            return(null);
        }
示例#5
0
        static public DockControlContainer CreateNewContainerIfNecessary(DockingManagerControl manager, DockControlContainer container, Point screenDropPoint, int dockingBarSize)
        {
            DockControlContainer result = container;

            if (container.Visible)
            {
                Point managerLocalDropPoint = manager.PointToClient(screenDropPoint);
                DockControlContainerCollection containerCollection = GetDockControlContainerCollection(manager, container);
                int index = containerCollection.IndexOf(container);

                switch (container.Dock)
                {
                case DockStyle.Top:
                    if (managerLocalDropPoint.Y < container.Top + dockingBarSize)
                    {
                        result = containerCollection.InsertPanel(index + 1) as DockControlContainer;
                    }
                    else if (managerLocalDropPoint.Y > container.Bottom - dockingBarSize)
                    {
                        result = containerCollection.InsertPanel(index) as DockControlContainer;
                    }

                    break;

                case DockStyle.Bottom:

                    if (managerLocalDropPoint.Y < container.Top + dockingBarSize)
                    {
                        result = containerCollection.InsertPanel(index) as DockControlContainer;
                    }
                    else if (managerLocalDropPoint.Y > container.Bottom - dockingBarSize)
                    {
                        result = containerCollection.InsertPanel(index + 1) as DockControlContainer;
                    }

                    break;

                case DockStyle.Left:

                    if (managerLocalDropPoint.X < container.Left + dockingBarSize)
                    {
                        result = containerCollection.InsertPanel(index + 1) as DockControlContainer;
                    }
                    else if (managerLocalDropPoint.X > container.Right - dockingBarSize)
                    {
                        result = containerCollection.InsertPanel(index) as DockControlContainer;
                    }

                    break;

                case DockStyle.Right:

                    if (managerLocalDropPoint.X < container.Left + dockingBarSize)
                    {
                        result = containerCollection.InsertPanel(index) as DockControlContainer;
                    }
                    else if (managerLocalDropPoint.X > container.Right - dockingBarSize)
                    {
                        result = containerCollection.InsertPanel(index + 1) as DockControlContainer;
                    }

                    break;

                default:
                    throw new InvalidOperationException("Invalid dock style");
                }
            }

            return(result);
        }