Пример #1
0
        private KryptonDockingDockspace CreateAndInsertDockspace(int index, string name, Size size)
        {
            // Create a dockspace separator do the dockspace can be resized
            KryptonDockspaceSeparator separatorControl = new KryptonDockspaceSeparator(Edge, false);

            separatorControl.SplitterMoveRect += OnDockspaceSeparatorMoveRect;
            separatorControl.SplitterMoved    += OnDockspaceSeparatorMoved;
            separatorControl.SplitterNotMoved += OnDockspaceSeparatorNotMoved;
            separatorControl.Disposed         += OnDockspaceSeparatorDisposed;

            // Create and add the dockspace to the collection
            KryptonDockingDockspace dockspaceElement = new KryptonDockingDockspace(name, Edge, size);

            dockspaceElement.HasVisibleCells   += OnDockingDockspaceHasVisibleCells;
            dockspaceElement.HasNoVisibleCells += OnDockingDockspaceHasNoVisibleCells;
            dockspaceElement.Disposed          += OnDockingDockspaceDisposed;
            InternalInsert(index, dockspaceElement);

            // Create lookup associations
            _lookupSeparator.Add(separatorControl, dockspaceElement);
            _lookupDockspace.Add(dockspaceElement, separatorControl);

            // Events are generated from the parent docking manager
            KryptonDockingManager dockingManager = DockingManager;

            if (dockingManager != null)
            {
                // Allow the dockspace and dockspace separator to be customized by event handlers
                DockspaceEventArgs          spaceArgs     = new DockspaceEventArgs(dockspaceElement.DockspaceControl, dockspaceElement);
                DockspaceSeparatorEventArgs separatorArgs = new DockspaceSeparatorEventArgs(separatorControl, dockspaceElement);
                dockingManager.RaiseDockspaceAdding(spaceArgs);
                dockingManager.RaiseDockspaceSeparatorAdding(separatorArgs);
            }

            if (index == 0)
            {
                InsertAtOuterMost(separatorControl);
                InsertAtOuterMost(dockspaceElement.DockspaceControl);
            }
            else if (index == (Count - 1))
            {
                InsertAtInnerMost(dockspaceElement.DockspaceControl);
                InsertAtInnerMost(separatorControl);
            }
            else
            {
                KryptonDockingDockspace target = this[index + 1] as KryptonDockingDockspace;
                InsertAfter(dockspaceElement.DockspaceControl, target.DockspaceControl);
                InsertAfter(separatorControl, target.DockspaceControl);
            }

            return(dockspaceElement);
        }