public override bool DragAndDrop_HandleDrop(Package p, int x, int y) { Point pos = CanvasPosToLocal(new Point(x, y)); Dock dir = GetDroppedTabDirection(pos.X, pos.Y); Invalidate(); DockedTabControl addTo = m_DockedTabControl; if (dir == Dock.Fill && addTo == null) { return(false); } if (dir != Dock.Fill) { DockBase dock = GetChildDock(dir); addTo = dock.m_DockedTabControl; if (!m_DropFar) { dock.BringToFront(); } else { dock.SendToBack(); } } if (p.Name == "TabButtonMove") { TabButton tabButton = DragAndDrop.SourceControl as TabButton; if (null == tabButton) { return(false); } addTo.AddPage(tabButton); } if (p.Name == "TabWindowMove") { DockedTabControl tabControl = DragAndDrop.SourceControl as DockedTabControl; if (null == tabControl) { return(false); } if (tabControl == addTo) { return(false); } tabControl.MoveTabsTo(addTo); } return(true); }
public void MoveTabsTo(DockedTabControl target) { var children = TabStrip.Children.ToArray(); // copy because collection will be modified foreach (ControlBase child in children) { TabButton button = child as TabButton; if (button == null) { continue; } target.AddPage(button); } Invalidate(); }