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; } }
private void LayoutControls(DockControlContainerCollection container) { for (int index = 0; index < container.Count; index += 1) { DockControlContainer control = container[index] as DockControlContainer; control.SendToBack(); } }
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(); }
private DockControlContainer GetContainerAtPoint(DockControlContainerCollection containers, Point point) { foreach (DockControlContainer container in containers) { if (container.Visible && container.Bounds.Contains(point)) { return(container); } } return(null); }
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); }