C# 将面板克隆到其他窗体

本文关键字:其他 窗体 | 更新日期: 2023-09-27 18:34:34

我的问题很容易解释,但很难得到答案。我有2种表格。在表单 1 中,我什么都没有,在表单 2 中,我有一个内部带有控件的面板。基本上,当我单击form1中的按钮时,我想将面板从form2克隆/复制到form1,保持其所有控件和属性相同。

我已经在按钮单击事件中创建了 form2 的实例,并在 form2.designer 中公开了面板.cs因此我可以在不打开 form2 的情况下访问它。 我试图在 form1 中有一个面板,以便将该面板与另一个面板相等,但没有工作。我没有想法,在网上找不到任何东西。有人可以帮我吗?很抱歉有任何英语错误。

C# 将面板克隆到其他窗体

对我来说

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

将此方法添加到窗体 1...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());
}

个人不建议这样做,这太可怕了,我敢打赌会有一种更干净的方式来实现你想要的!