0

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

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

4

1 回答 1

1

对我来说听起来像是一个肮脏的黑客,但它的价值:从 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());
}

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

于 2013-10-08T12:56:15.467 回答