我正试图以这种方式在两个不同的面板上添加一个面板:
_formMain.panel3.Controls.Add(_formMain.panel1);
_formMain.panel4.Controls.Add(_formMain.panel1);
我获得的是panel1仅添加到panel4,并从panel3中删除。 似乎最新的“添加”会覆盖其他“添加”。这是真的吗? 为什么?如何将相同的面板添加到某些不同的控件? 谢谢
答案 0 :(得分:3)
你的头衔说明了一切:
只有一个控件,它只能在一个位置,读取它只能有一个父级。
因此,如果您将Parent
或Add
更改为另一个控件的Controls
集合,这与其他内容完全相同,它将从之前的位置消失。因此虽然Add
听起来并不像,但它等于Move
。
如果您需要更多控件,则需要创建更多控件!当然,它们将是不同的控件,具有不同的属性和内容..
如果您保持同步,则可以让多个控件显示相同的内容。自动同步的一个主要示例是两个DataGridviews
,两者都具有相同的DataSource
。对于其他内容,例如文字或图片,同义词由您决定!
你可以考虑编写一个克隆函数,它可以创建一个深层复制,但你仍然需要进行同步。这可能也是可编码的,具体取决于细节。或者你可以将它变成UserControl并添加新的实例。