Jae*_*bum 1 c# forms controls panel
我的项目中有两种形式,我正在尝试将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.
Run Code Online (Sandbox Code Playgroud)
突然,form2.Controls ["panel1"]变为NULL.
我不明白为什么会这样.
一个控件只能有一个父控件 - 如果你将一个已经有父控件的控件添加到另一个控件,它将首先删除它自己.
来自以下文档ControlCollection.Add:
Control一次只能分配给一个Control.ControlCollection.如果Control已经是另一个控件的子控件,则在将控件添加到另一个控件之前将其从该控件中删除.
如果你考虑一下,这是有道理的 - 一个小组需要知道它在哪里,它有多大等等.它实际上逻辑上只能在一个地方.
as顺便说一句,我建议使用强制转换,而不是当你无条件地继续进行,就像演员有效一样 - 这样,如果相关对象不是正确的类型,你会在最早的时刻得到一个例外.检测,而不是null通过您的系统传播自身的参考,可能不会被长时间拾取(使得更难以诊断问题并引入数据丢失的可能性).
| 归档时间: |
|
| 查看次数: |
987 次 |
| 最近记录: |