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


浙公网安备 33010602011771号