DevExpress动态对接底座面板

时间:2013-01-28 05:09:03

标签: winforms devexpress

我希望将停靠面板停靠在现有停靠面板上。

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

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

我可以根据需要将第一个新的停靠面板停靠到设置停靠面板。任何后续停靠面板都不会停靠在前一个底部。相反,它们停靠在前一个的右侧,并强制#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);

1 个答案:

答案 0 :(得分:2)

请尝试以下方法:

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();
}