繁体   English   中英

c#当我将控件添加到面板时,控件变为NULL

[英]c# when I add control to panel, the control becomes NULL

我的项目中有两种形式,我正在尝试将Form2的面板的控件添加到Form1的面板中。

所以,

Form2 form2 = new Form2();
new_panel = form2.Controls["panel1"] as Panel; // form2's panel 

this.panel.Controls.Add(new_panel); // add form2's panel into form1's panel.

突然,form2.Controls [“ panel1”]变为NULL。

我不明白为什么会这样。

一个控件只能有一个父控件-如果将一个已经具有父控件的控件添加到另一个控件中,它将首先删除自身。

ControlCollection.Add的文档中:

一次只能将一个控件分配给一个Control.ControlCollection。 如果该控件已经是另一个控件的子级,则在将其添加到另一个控件之前将其从该控件中删除。

如果您考虑一下,那是有道理的-面板需要知道它在哪里,它有多大等等。从逻辑上讲,它一次只能位于一个位置。

顺便说一句,我建议您使用强制类型转换,而不要as强制转换一样无条件地进行操作,那样,如果相关对象的类型正确,则最早会出现异常检测,而不是null引用会在您的系统中传播,很可能很长时间没有被拾取(这使得诊断问题引入数据丢失的可能性更加困难)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM