DevExpress动态向DockManager中增加DockPanel,并向DockPanel中动态增加XtraForm

private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (rootPanel==null)
            {
                rootPanel = new DockPanel();
                rootPanel.Text = "RootPanel";
                var dockpanel_container = new ControlContainer();//创建一个容器对象

                //此项必须,如果不将容器对象加入到panel中,则会出现子窗体Form将Panel覆盖的情况
                //此现象会造成将panel拖出窗体浮动时,就无法再进行拖动,只需要给最顶层的panel加这个对象就行了
                rootPanel.Controls.Add(dockpanel_container);

                XtraForm2 form2 = new XtraForm2();
                form2.TopLevel = false;//将子窗体的顶级属性去除,否则无法加入panel
                form2.FormBorderStyle = FormBorderStyle.None;
                form2.Dock = DockStyle.Fill;
                rootPanel.Controls.Add(form2);
                form2.Visible = true;

                //注意,如果主窗体上没有加入 documentManager,则panel无法Fill
                this.dockManager1.AddPanel(DockingStyle.Left, rootPanel);

                ////加入 documentManager 之后,只用设置此属性则此panel直接就在中间占满
                rootPanel.DockedAsTabbedDocument = true;
                return;
            }

            //加入其它窗体,因为panel2是由其它的panel创建的,所以不再需要加入容器 ControlContainer
            DockPanel panel2 = rootPanel.AddPanel();
            panel2.Text = "Panel2";
            XtraForm2 form3 = new XtraForm2();
            form3.TopLevel = false;//将子窗体的顶级属性去除,否则无法加入panel
            form3.FormBorderStyle = FormBorderStyle.None;
            form3.Dock = DockStyle.Fill;
            panel2.Controls.Add(form3);
            form3.Visible = true;
           
        }

  

 

posted @ 2020-09-04 17:41  人不自在  阅读(2647)  评论(0编辑  收藏  举报