如何在win应用程序中的面板其他表单中加载表单
Posted
技术标签:
【中文标题】如何在win应用程序中的面板其他表单中加载表单【英文标题】:How to Load Form inside panel other form in win app 【发布时间】:2013-07-31 05:33:54 【问题描述】:我用 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();
现在我想在这个面板的子表单上显示其他表单,但我不知道该怎么做。
【问题讨论】:
执行此操作时将 IsMdiContainer 设置为 true 是没有意义的。如果您希望在该面板中显示另一个表单,则由您设置大小和位置属性。您不会得到表单可以重叠的 MDI 行为。 【参考方案1】:我认为您的问题已通过此代码解决:
SubForm objForm= SubForm.InstanceForm();
objForm.TopLevel = false;
pnlSubSystem.Controls.Add(objForm);
objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
objForm.Dock = DockStyle.Fill;
objForm.Show();
【讨论】:
SubForm objForm= SubForm.InstanceForm();作为相同的 SubForm objForm= new SubForm();【参考方案2】:据我了解,您非常接近。要将另一个表单添加到 subform
,请尝试使用相同的代码:
pnlSubSystem.Controls.Add(objForm);
使用(其中objForm2
是新的subForm
)
SubForm objForm2 = new SubForm();
objForm.Controls.Add(objForm2);
【讨论】:
【参考方案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();
【讨论】:
【参考方案4】:另一种方式:
objForm.TopLevel = false;
objForm.Parent = pnlSubSystem;
objForm.Show();
这是我在 *** 上的第一个答案。
【讨论】:
以上是关于如何在win应用程序中的面板其他表单中加载表单的主要内容,如果未能解决你的问题,请参考以下文章