我正在使用Windows窗体ASP.net C#
我有panel1,我在其中打开一个名为form1的表单。
form1有一个按钮。在这个按钮上,我想关闭form1并在同一个panel1中打开名为form2的新表单
我在panel1中打开了form1,如下所示
Form1 frm = new Form1();
frm.TopLevel = false;
frm.FormBorderStyle = FormBorderStyle.None;
panel1.Controls.Clear();
panel1.Controls.Add(frm);
frm.Visible = true;
请帮忙
答案 0 :(得分:2)
首先 - 我建议你使用User Controls,它应该被用作其他控件的可重用容器。 Forms应该代表窗口。因此,使用窗体作为托管在另一个窗口上的控件容器并不是一个好主意。如果您需要能够在面板和单独的窗口中显示相同的数据,则在窗体上和Form1上使用相同的用户控件。
所以,用户控制。将它们添加到面板非常简单:
UserControl1 control1 = new UserControl1();
control1.Dock = DockStyle.Fill;
control1.SomethingHappened += UserControl1_SomethingHappened; // see below
panel1.Controls.Clear();
panel1.Controls.Add(control1);
要能够切换用户控件,您可以将事件添加到UserControl1
并在单击按钮时将其抬起:
// UserControl1 code
public event EventHandler SomethingHappened;
private void Button1_Click(object sender, EventArgs e)
{
if (SomethingHappened != null) // notify listeners, if any
SomethingHappened(this, EventArgs.Empty);
}
然后在主表单上处理此事件:
// MainForm code
private void UserControl1_SomethingHappened(object sender, EventArgs e)
{
UserControl1 control1 = (UserControl1)sender;
sender.SomethingHappened -= UserControl1_SomethingHappened;
UserControl2 control2 = new UserControl2();
control2.Dock = DockStyle.Fill;
panel1.Controls.Clear();
panel1.Controls.Add(control2);
}