将相同的图像对象添加到集合将从第一个添加的集合中删除该图像
本文关键字:集合 图像 添加 删除 第一个 对象 | 更新日期: 2023-09-27 18:11:38
当下面的代码运行时,要么imagepanel的control集合中有一个控件,要么orImagePanel的control集合为空。我意识到,当我添加到一个集合时,另一个集合被清空。有人知道为什么吗?
Image imageOff = new Image();
imageOff.Attributes["style"] = "display:inline-Block; overflow:hidden;";
imageOff.ImageUrl = "/Off.png";
Image etherImage = imageOff;
Image orImage = imageOff;
orImagePanel.Controls.Add(orImage);
eitherImagePanel.Controls.Add(etherImage);
因为控件不能是两个不同面板的子控件。您需要克隆映像对象。目前,您只是创建了两个具有相同对象引用的变量。
Image etherImage = new Image();
etherImage .Attributes["style"] = "display:inline-Block; overflow:hidden;";
etherImage .ImageUrl = "/images/webdataentry/Off.png";
Image orImage = new Image(); // New Object! thats the key.
orImage .Attributes["style"] = "display:inline-Block; overflow:hidden;";
orImage .ImageUrl = "/images/webdataentry/Off.png";
orImagePanel.Controls.Add(orImage);
eitherImagePanel.Controls.Add(etherImage);
。您还可以在imageOff
control
都有一个controls
集合,但只有一个父属性。当使用a.controls.add(b)
时,也会调用b.setParent(a)
。由于这是一个1:n
关系,将控件添加到另一个面板,将再次调用setParent
并覆盖第一个父控件。http://msdn.microsoft.com/de-de/library/system.windows.forms.control.parent.aspx 完整的控件布局是一个树。