停靠面板的 DevExpress 动态停靠

Posted

技术标签:

【中文标题】停靠面板的 DevExpress 动态停靠【英文标题】:DevExpress dynamic docking of dock panels 【发布时间】:2013-01-28 05:09:02 【问题描述】:

我希望将停靠面板停靠到现有停靠面板。

我目前的布局如下。窗口左侧是设置停靠面板。右侧是另一个停靠面板。右侧停靠面板占据了大部分窗口。左侧停靠面板包含的项目在与(控件等)交互时会影响右侧停靠面板中看到的内容。

我需要动态添加新的左侧停靠面板。第一个应该停靠在设置停靠面板的底部。第二个应该停靠到第一个,依此类推。

我可以根据需要让第一个新的停靠面板停靠到设置停靠面板。任何后续的停靠面板都不会停靠在前一个面板的底部。相反,它们停靠在前一个的右侧并强制 #1 进入一列。这是我的代码:

       // Add a new dock panel
        DockPanel dockPanel = dockManager1.AddPanel(DockingStyle.Top);

        // Dock the panel to the previous panel
        if (mLeftSidePanels.Count == 0)
            dockPanel.DockTo(dockPanelSettings);
        else
            dockPanel.DockTo(mLeftSidePanels[mLeftSidePanels.Count - 1].DockPanel);

        // Add the left side dock panel to our collection
        mLeftSidePanels.Add(dockpanel);

【问题讨论】:

添加你想做什么的线框图。我无法判断你在做什么.. MSPaint! i.imgur.com/t6Ghk3T.png 【参考方案1】:

请尝试以下方法:

IList<DockPanel> mLeftSidePanels = new List<DockPanel>();
//...
void addNewPanelButton_Click(object sender, EventArgs e) 
    dockManager1.BeginUpdate();

    DockPanel dockPanel = dockManager1.AddPanel(DockingStyle.Top);
    // Dock the panel to the previous panel
    if(mLeftSidePanels.Count == 0)
        dockPanel.DockTo(dockPanelSettings);
    else 
        // add to parent split container
        dockPanel.DockTo(dockPanelSettings.ParentPanel);
    
    mLeftSidePanels.Add(dockPanel);

    dockManager1.EndUpdate();

【讨论】:

以上是关于停靠面板的 DevExpress 动态停靠的主要内容,如果未能解决你的问题,请参考以下文章

如何在面板上预览顶部停靠控件下方插入顶部停靠控件

C#如何实现VS2010软件界面的子窗口(可浮动、停靠、自动隐藏)的功能? 使用第三方控件DevExpress

仅对齐停靠面板中的可见元素

DockManager如何停靠 z

Unity3D 之 console面板的停靠

用html创建停靠面板的最佳方法是什么? [关闭]