C#将面板克隆为其他形式

时间:2013-10-08 11:25:12

标签: c# winforms copy clone panel

我的问题很容易解释,但很难得到答案。 我有两种形式。在form1我什么都没有,在form2我有一个控件里面的面板。基本上,当我从form1单击一个按钮时,我想将面板从form2克隆/复制到form1,保持它的所有控件和属性相等。

我已经在按钮单击事件中创建了一个form2实例,并在form2.designer.cs中将该面板公开,这样我就可以在不打开form2的情况下访问它。我试图在form1中有一个面板,以便我将该面板等于另一个,但是没有用。我没有想法,也无法在网上找到任何东西。有人能帮帮我吗? 对不起任何英语错误。

1 个答案:

答案 0 :(得分:0)

对我来说听起来像是一个肮脏的黑客,但是对于它的价值:从form1创建对form2的引用。当您执行“复制”时,您在form1上创建所有控件的列表,然后清除form1。然后,您将控件添加到form2。

将此方法添加到form1 ... form2是您对第二个表单的引用。通过点击按钮等事件来解决此问题。

public void CopyControls()
{
    List<Control> ctrls = new List<Control>();
    foreach (Control c in this.Controls)
    {
        ctrls.Add(c);
    }
    this.Controls.Clear();
    form2.Controls.AddRange(ctrls.ToArray());
}

我个人不建议这样做,这很可怕,我打赌会有一种更清洁的方式来实现你想要的!