Exemple #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;
            }
        }
Exemple #2
0
        private void DockControl(Point dropPoint, DockControlContainer container, int dimension)
        {
            Point containerLocalDropPoint = container.PointToClient(PointToScreen(dropPoint));

            int index = 0;

            DockedControlCollection controls = container.DockedControls as DockedControlCollection;

            foreach (DockingControl child in controls)
            {
                Rectangle bounds = child.Bounds;

                switch (container.Dock)
                {
                case DockStyle.Top:
                case DockStyle.Bottom:
                    if (bounds.Right >= containerLocalDropPoint.X)
                    {
                        if (containerLocalDropPoint.X < (bounds.Left + bounds.Right) / 2)
                        {
                            container.DockControl(this, index, dimension);
                            return;
                        }
                    }

                    break;

                case DockStyle.Left:
                case DockStyle.Right:
                    if (bounds.Bottom >= containerLocalDropPoint.Y)
                    {
                        if (containerLocalDropPoint.Y < (bounds.Top + bounds.Bottom) / 2)
                        {
                            container.DockControl(this, index, dimension);
                            return;
                        }
                    }

                    break;
                }

                index += 1;
            }

            container.DockControl(this, container.DockedControlList.Count, dimension);
        }