C# 如何将一个表单加载到另一个表单';s小组
我有一个名为frmTest1的表单,其中有一个带有两个面板的splitcontainer。面板2应一次加载多个表单。对于第一个模板,它可以正常工作,但第二个模板无法将第三个模板加载到frmTest1的面板2中 以下是frmTest 1代码:C# 如何将一个表单加载到另一个表单';s小组,c#,winforms,C#,Winforms,我有一个名为frmTest1的表单,其中有一个带有两个面板的splitcontainer。面板2应一次加载多个表单。对于第一个模板,它可以正常工作,但第二个模板无法将第三个模板加载到frmTest1的面板2中 以下是frmTest 1代码: namespace Project1 { public partial class frmMain3 : Form { public frmMain3() { InitializeComponent(); }
namespace Project1
{
public partial class frmMain3 : Form
{
public frmMain3()
{
InitializeComponent();
}
private void btnShowTest1_Click(object sender, EventArgs e)
{
showScreen(new frmTest1());
}
public void showScreen(Control ctl)
{
while (splitContainer1.Panel2.Controls.Count > 0)
splitContainer1.Panel2.Controls[0].Dispose();
if (ctl is Form)
{
var frm = ctl as Form;
frm.TopLevel = false;
frm.FormBorderStyle = FormBorderStyle.None;
frm.Visible = true;
}
ctl.Dock = DockStyle.Fill;
splitContainer1.Panel2.Controls.Add(ctl);
}
}
}
第二张表格的代码如下:
namespace Project1
{
public partial class frmTest1 : Form
{
public frmTest1()
{
InitializeComponent();
}
private void btnShowTest4_Click(object sender, EventArgs e)
{
frmMain3 main = new frmMain3();
main.showScreen(new frmTest4()); //Nothing shows
}
}
}
从我所做的研究来看,解决方案似乎是使用usercontrol,但我以前从未使用过它,所以我很挣扎。有人能告诉我如何解决这个问题吗?请尝试使用UserControl。只需将frmMain3的基类更改为“UserControl”,并从showScreen()中删除整个“if(ctl is Form)”部分。这是否回答了您的问题?“但以前从未使用过”-不是不尝试的好借口。尝试也许你第一次尝试就会成功。如果不是——你有一个好的(比现在更好的)问题,并且有理由这样问。我已经花了两天时间在这个问题上,这就是为什么我问你需要使用for的一个实例。请参阅我的双表单项目:此处的注释可能很有趣:。