因为一个控件不能是两个不同面板的子项。您需要克隆图像对象。目前,您只是创建 2 个具有相同对象引用的变量。
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
http://msdn.microsoft.com/de-de/library/system.drawing.image.clone.aspx
编辑:您的评论:每个control
都有一个controls
-Collection,但只有一个父属性。使用时a.controls.add(b)
也会b.setParent(a)
调用。由于这是一个1:n
关系,将您的控件添加到另一个面板,将setParent
再次调用并覆盖第一个父级。
http://msdn.microsoft.com/de-de/library/system.windows.forms.control.parent.aspx
完整的控制布局是一棵树。每个根有很多叶子,但叶子只能有一个根。