如何关闭嵌入在面板中的表单

时间:2016-09-04 15:06:56

标签: c# winforms

所以我有4个表格。在Form1里面有2个面板和一个按钮。当我点击button1上的Form1时,会在第一个面板上打开Form2。所以在Form2里面有2个按钮。 button1_Click方法在Form3的第二个面板上显示Form1。如何显示Form4  在button2_Click的方法Form2的第二个面板上?

   private void button2_Click(object sender, EventArgs e)
    {

        Form4 myForm = new Form4();
        myForm.TopLevel = false;
        myForm.AutoScroll = true;
        var Form1 = Application.OpenForms.OfType<Form1>().Where(x => x.Name == "Form1").FirstOrDefault();
        Form1.panel2.Controls.Add(myForm);
        myForm.Show();
    }` 

这是我在第二个面板上尝试显示Form4的代码。但它不会取代当前出现在Form3第二个面板上的Form1。我真的不知道该怎么办。请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:0)

所以从表单2开始,你希望能够在panel2中加载form3或form4吗?

private Form3 form3 = null;
private Form4 form4 = null;

private void button2_Click(object sender, EventArgs e)
{
    if (form3 != null)
    {
        Form1.panel2.Controls.Remove(form3);
        form3.Close();
        form3 = null;
    }

    form4 = new Form4();
    form4.TopLevel = false;
    form4.AutoScroll = true;
    var Form1 = Application.OpenForms.OfType<Form1>().Where(x => x.Name == "Form1").FirstOrDefault();
    Form1.panel2.Controls.Add(form4);
    form4.Show();
}` 

并对Form3执行相同操作(在创建form3之前删除并关闭form4)

还可以考虑像HansPassant在评论中建议的那样设置form3和form4属性。

答案 1 :(得分:-2)

Panel1.Controls.Clear()将关闭所有活动表单,而Panel1.Dispose()将放置所有控件。