C# 如何在win应用程序中的其他窗体中加载窗体内的窗体

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17962341/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-10 10:56:46  来源:igfitidea点击:

How to Load Form inside panel other form in win app

c#winformssubform

提问by Iraj

I Create a Windows Forms application with C#.

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

I have a general Form and a panel on it.

我有一个通用表格和一个面板。

I show subForm into this panel with code:

我使用代码将 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();

now I want to show other form on subForm of this panel, But I dont know how to do it.

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

采纳答案by M.Mohammadi

I think your problem resolved by this code:

我认为此代码解决了您的问题:

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

回答by Martijn van Put

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

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

pnlSubSystem.Controls.Add(objForm);

use (where objForm2is the new subForm)

使用(objForm2新的在哪里subForm

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

回答by Mohit Shrivastava

Since you already got the answer that by removing this.IsMdiContainer = true;your code would run perfectly fine. Because IsMdiContainer property changes the display and behavior of the form to an MDI parent form. When this property is set to true, the form displays a submerged client area. All MDI child forms assigned to the parent form are displayed within its client area.

因为您已经得到答案,删除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 form which will be the template for the child forms. Each time you want to create a new child window to your application, you can create a new instance of this template form and make the first form as its parent form.

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

回答by Alan Ackart

Another way:

其它的办法:

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

This is my first answer on Stackoverflow.

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