簡體   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