在不同的父母上多次添加相同的控件

时间:2014-10-17 09:22:49

标签: c# visual-studio-2008 controls

我正试图以这种方式在两个不同的面板上添加一个面板:

_formMain.panel3.Controls.Add(_formMain.panel1); _formMain.panel4.Controls.Add(_formMain.panel1);

我获得的是panel1仅添加到panel4,并从panel3中删除。 似乎最新的“添加”会覆盖其他“添加”。这是真的吗? 为什么?如何将相同的面板添加到某些不同的控件? 谢谢

1 个答案:

答案 0 :(得分:3)

你的头衔说明了一切:

只有一个控件,它只能在一个位置,读取它只能有一个父级。

因此,如果您将ParentAdd更改为另一个控件的Controls集合,这与其他内容完全相同,它将从之前的位置消失。因此虽然Add听起来并不像,但它等于Move

如果您需要更多控件,则需要创建更多控件!当然,它们将是不同的控件,具有不同的属性和内容..

如果您保持同步,则可以让多个控件显示相同的内容。自动同步的一个主要示例是两个DataGridviews,两者都具有相同的DataSource。对于其他内容,例如文字或图片,同义词由您决定!

你可以考虑编写一个克隆函数,它可以创建一个深层复制,但你仍然需要进行同步。这可能也是可编码的,具体取决于细节。或者你可以将它变成UserControl并添加新的实例。