如何在win app中加载表单面板其他表单

时间:2013-07-31 05:33:54

标签: c# winforms subform

我用C#创建一个Windows窗体应用程序。

我有一个普通表格和一个小组。

我将subForm显示在此面板中,代码为:

SubForm objForm= SubForm.InstanceForm();
this.IsMdiContainer = true;
objForm.TopLevel = false;
pnlSubSystem.Controls.Add(objForm);
objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
objForm.Dock = DockStyle.Fill;
objForm.Show();

现在我想在这个面板的subForm上显示其他形式,但我不知道该怎么做。

4 个答案:

答案 0 :(得分:27)

我认为您的问题已通过此代码解决:

    SubForm objForm= SubForm.InstanceForm();
    objForm.TopLevel = false;
    pnlSubSystem.Controls.Add(objForm);
    objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
    objForm.Dock = DockStyle.Fill;
    objForm.Show();

答案 1 :(得分:4)

据我了解,你非常接近。要将另一个表单添加到subform,请尝试使用相同的代码:

pnlSubSystem.Controls.Add(objForm);

使用(objForm2是新的subForm

SubForm objForm2 = new SubForm();
objForm.Controls.Add(objForm2); 

答案 2 :(得分:3)

由于您已经得到答案,通过删除this.IsMdiContainer = true;您的代码将完全正常运行。因为IsMdiContainer属性将窗体的显示和行为更改为MDI父窗体。当此属性设置为true时,表单将显示一个已浸没的客户区域。分配给父表单的所有MDI子表单都显示在其客户区域中。

SubForm objForm= SubForm.InstanceForm();
objForm.TopLevel = false;
pnlSubSystem.Controls.Add(objForm);
objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
objForm.Dock = DockStyle.Fill;
objForm.Show();

objForm表单,它将成为子表单的模板。每次要为应用程序创建新的子窗口时,都可以创建此模板表单的新实例,并将第一个表单作为其父表单。

//Create a new instance of the MDI child template form
SubForm objForm = new SubForm(); 
//Set parent form for the child window 
objForm.MdiParent=this; // Last ObjForm or something
//Display the child window
objForm.Show();

答案 3 :(得分:0)

另一种方式:

objForm.TopLevel = false;
objForm.Parent = pnlSubSystem;
objForm.Show();

这是我在Stackoverflow上的第一个答案。