单击子面板内的按钮控件在父面板中显示表单

时间:2015-02-16 09:07:57

标签: c# winforms panel

我有四张表格。 Form1上,窗体2,Form3,Form4。 当我单击form1.panel1中的一个按钮时,form2将显示在form1.panel1中。 Form2还有一个面板和按钮。 在form2中单击按钮控件时,form3出现在form2中包含的小面板中。我通过以下代码点击按钮来实现上述所有操作

        panel1.Controls.Clear(); 
        form2 f2 = new form2();
        f2.TopLevel = false;
        panel1.Controls.Add(f2);
        f2.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        panel1.Location = new Point(this.ClientSize.Width / 2 - panel1.Size.Width / 2, this.ClientSize.Height / 2 - panel1.Size.Height / 2);
        panel1.Anchor = AnchorStyles.None;
        panel1.Dock = DockStyle.Fill;
        f2.Show();

我想要实现的是当我点击form3(出现在form2的子面板中)时,form4应该出现在parentpanel中(比如form1.panel1)

我使用下面的代码,但不显示表单。

        Form4 f4 = new Form4();

        Form1 f1 = new Form1();
        f4.TopLevel = false;
        f1.panel1.Controls.Clear();
        f1.panel1.Controls.Add(f4);
        f4.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        f1.panel1.Location = new Point(this.ClientSize.Width / 2 - f1.panel1.Size.Width / 2, this.ClientSize.Height / 2 - f1.panel1.Size.Height / 2);
        f1.panel1.Anchor = AnchorStyles.None;
        f1.panel1.Dock = DockStyle.Fill;
        this.Hide();

        f4.Show();

我如何实现它?

1 个答案:

答案 0 :(得分:0)

您现在正在做的是,您正在form1中创建form3的新实例。您要做的是将f1(使用this中的form1)作为form1form2form3的参数传递,如何以其他形式访问原始form1

可能有更好的解决方案,但这是我现在能想到的。希望它有所帮助。