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