【问题标题】:add the same control several times on different parents在不同的父母上多次添加相同的控件
【发布时间】:2014-10-17 18:10:39
【问题描述】:

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

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

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

【问题讨论】:

  • 一个控件只能有一个父控件。您的第二次调用会自动将其从 panel3.Controls 集合中删除。

标签: c# visual-studio-2008 controls


【解决方案1】:

你的标题说明了一切:

只有一个控件,它只能在一个的地方,读它只能有一个父级。

因此,如果您将ParentAdd 更改为另一个Control 的Controls 集合,这完全一样,它将从以前的位置消失.. 所以虽然Add 没有声音喜欢就等于Move

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

如果您保持同步,您可以让多个控件显示相同的内容。自动同步的一个主要示例是两个DataGridviews,它们都具有相同的DataSource。对于其他内容,例如文本或图像,同步取决于您!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2012-09-04
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    相关资源
    最近更新 更多