public virtual void Remove(DockPaneLayoutEngine pane) { if (pane.Children.Count > 0) { var newParent = pane.Children.Last(); pane._children.Remove(newParent); ChildReplace(pane, newParent); newParent._children.InsertRange(0, pane.Children); newParent.Initialize(this, pane.Owner, pane.Align); } else _children.Remove(pane); RemoveEngine(pane); pane._ownNodes.Clear(); pane._ownNodes.Add(pane); pane.Top = null; pane.Bottom = null; pane.Left = null; pane.Right = null; pane._children.Clear(); //Initializeは実行前にChildrenをClearしないと子要素が巻き添え食らう pane.Initialize(null, null, DockDirection.None); pane.OnRemoved(new EventArgs()); OnPaneRemoved(new LayoutEngineEventArgs(pane)); }