2012-05-31 86 views
5

Windows窗體項目,只能在設計器(即使用鼠標,編譯前)工作。我有一個Form和2個面板。 panel1停靠在form1中(選項 - 填充)。 panel2也停靠(填充)在form1中。另外,面板2位於面板1的前面(後者隱藏在前面)。我的問題是 - 當我斷開panel2並停靠它時 - 它停靠在panel1(panel1變成它的父節點),而不是在form1中。我如何更改panel2的父級? (ctrl + x)panel2,選擇form1然後粘貼(ctrl + v)panel2,但是由於某種原因,這會刪除panel2控件和代碼之間的所有連接(ctrl + x)例如,點擊面板2上的按鈕不再有效,儘管處理事件的函數仍然存在)。C#面板對接問題

有什麼更好的點子?

+2

您可以取消停靠PANEL1,然後移動面板三分之二PANEL1的到Form1的背景。我也一直在努力。那總是我的工作,我也發現切割和粘貼它會導致很多haedaches。它也可以用代碼固定,使用設計器文件 –

+0

@ K'Leg對於我來說這看起來很像一個有效和正確的答案。 – gbianchi

+0

@gbianchi謝謝,我現在把它作爲一個答案,我應該開始做首先。 –

回答

6

通過切斷事件處理程序來剪切控件到剪貼板,所以最好遠離剪切和粘貼在設計器中。

由於您使用的是設計器,請從Visual Studio中的View - Other Windows菜單中打開Document Outline窗體。使用箭頭按鈕正確設置父級或控件的停靠順序。

文檔大綱窗口看起來是這樣的:

enter image description here

0

面板不能改變父母當你改變是碼頭! 或者我沒有真正理解你的問題。

但是...如果你想改變父母。只需刪除控制面板列表中的面板並將其添加到窗體的控件列表中即可。

yourPanel.Controls.Remove(yourOtherPanel); 
yourForm.Controls.Add(yourOtherPanel); 
yourOtherPanel.Dock = .....; 
+0

用戶只使用設計器..看起來像代碼是uselees .. – gbianchi

+0

添加額外的代碼來改變父母,例如在Form1_Load似乎是一種解決方法(和一個醜陋的,因爲它停留在最終產品)。至於這個:「當你改變時,面板不能改變父母!」 - 顯然,它可以。我想這取決於我在(非)對接面板下面的控件。 – NPS

+0

面板通過邏輯改變他的父母,一旦你解除了它,他們就躺在panel1上,而不是在窗體上,所以它改變了它。 – gbianchi

1

似乎人們喜歡我的評論的答案,所以我在這裏把它作爲一個答案

您可以取消停靠PANEL1,然後移動面板三分之二PANEL1的到Form1的背景。我也一直在努力。那總是我的工作,我也發現切割和粘貼它會導致很多haedaches。它也可以用代碼固定,使用設計器文件