25

我用 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();

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

4

4 回答 4

33

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

    SubForm objForm= SubForm.InstanceForm();
    objForm.TopLevel = false;
    pnlSubSystem.Controls.Add(objForm);
    objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
    objForm.Dock = DockStyle.Fill;
    objForm.Show();
于 2013-07-31T06:41:17.153 回答
4

As I understand, you're very close. To add another form into subform try the same code instead:

pnlSubSystem.Controls.Add(objForm);

use (where objForm2 is the new subForm)

SubForm objForm2 = new SubForm();
objForm.Controls.Add(objForm2); 
于 2013-07-31T05:49:28.433 回答
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();
于 2015-10-07T03:43:12.430 回答
2

另一种方式:

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

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

于 2017-04-21T09:26:57.947 回答