【发布时间】:2016-04-12 00:25:00
【问题描述】:
我正在 VS 2015 中编写一个 Windows 窗体应用程序。
我有一部分表单要根据单选选项进行更改。我要更改的部分放在 Panel 控件中。
我目前的计划是在另一个表单上创建 4 个控件布局。我创建了 Form2 并在其上创建了 4 个面板。当单击单选按钮时,我想将这些面板中的内容从 Form2 复制到 Form1 中的面板。
目前,当我单击每个单选按钮时,Form2 面板中的控件消失了!他们可能正在被移动,而不是被复制。我点击的第一个确实出现在表格 1 上,但其他的没有出现在第一个之后。我根本不想更改 Form2 (RefPanels)。我只想将那里的内容复制到 Form1。这是我正在尝试的代码。
//RefPanels is my Form2 instance.
public Form2 RefPanels = new Form2();
//Each Radiobutton has something similar to this.
RadioBtn1_CheckChanged(...)
{
Control[] cArray = new Control[20];
RefPanels.Panel1.Controls.CopyTo(cArray, 0);
foreach (Control c in cArray)
{
Form1_Destination_Panel.Controls.Add(c);
}
}
我确定我做错了。你能帮忙吗?
【问题讨论】:
-
Controls.CopyTo 不进行深度复制,仅复制对控件的引用。这就是它们移动的原因 - 当您将它们添加到目标面板时,您正在添加退出控件。