如何在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应用程序中的面板其他表单中加载表单的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QT 中加载 UI 表单?

确定子表单/子报表是不是在 MS Access 中加载了表单或报表

如何从当前视图控制器的实现文件中加载另一个视图控制器?

React,在表单中加载脚本(mercadopago)

如果在 JSON 对象中加载空图像 URL,则应用程序崩溃

如何在 CSS 的其余部分同时显示在 CSS 中加载的背景图像