Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#当我将控件添加到面板时,该控件将变为NULL_C#_Forms_Controls_Panel - Fatal编程技术网

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

c#当我将控件添加到面板时,该控件将变为NULL,c#,forms,controls,panel,C#,Forms,Controls,Panel,在我的项目中有两个表单,我正在尝试将Form2面板的控件添加到Form1面板中 所以 突然,form2.Controls[“panel1”]变为NULL 我不明白为什么会发生这种情况。一个控件只能有一个父控件-如果将一个已经有父控件的控件添加到另一个控件,它将首先删除自身 从以下文件: 一个控件一次只能分配给一个控件。ControlCollection。如果该控件已经是另一个控件的子控件,则在将其添加到另一个控件之前,会将其从该控件中删除 如果你仔细想想,这是有道理的——一个面板需要知道它在哪里

在我的项目中有两个表单,我正在尝试将Form2面板的控件添加到Form1面板中

所以

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


我不明白为什么会发生这种情况。

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

从以下文件:

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

如果你仔细想想,这是有道理的——一个面板需要知道它在哪里,它有多大,等等。从逻辑上讲,它一次只能在一个地方


另一方面,我建议当您无条件地进行强制转换时,使用强制转换而不是
As
,就像强制转换已经工作一样-这样,如果相关对象的类型不正确,您会在检测的最早时刻得到异常,而不是
null
引用在您的系统中传播,可能长时间未被拾取(使问题更难诊断,并引入数据丢失的可能性)。

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

从以下文件:

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

如果你仔细想想,这是有道理的——一个面板需要知道它在哪里,它有多大,等等。从逻辑上讲,它一次只能在一个地方

另一方面,我建议当您无条件地进行强制转换时,使用强制转换而不是
As
,就像强制转换已经工作一样-这样,如果相关对象的类型不正确,您会在检测的最早时刻得到异常,而不是
null
引用在您的系统中传播,可能长时间未被提取(使问题更难诊断,并引入数据丢失的可能性)

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.