2011-09-10 111 views
3

我想重疊面板,以便每當我點擊一個按鈕某個面板將可見。Visual C#/ WinForms面板

但是做這個工作是非常棘手的,因爲面板不重疊。

for ex。我有面板1和麪板2:

我做面板2相同的面板1, 每當我地定位在相同的位置... 有時,面板2成爲面板1中的一員,每當我設置面板1對真面板2的可見性也顯示出來。

我想要的是兩個面板重疊在一起。

「順便說一句,我正在做一個垂直的標籤,這就是爲什麼我認爲,隱藏,取消隱藏面板可能是我的最好的辦法。

是否有可能使面板相互重疊?

回答

4

設計師正在努力爭取讓他們重疊。您需要使用一些小技巧來阻止底部面板吸取重疊的面板。把它重疊的面板稍微偏向左上方,以便它們真正重疊。然後將代碼添加到窗體構造函數中,將其放在正確的位置:

public Form1() { 
     InitializeComponent(); 
     panel2.Location = panel1.Location; 
     panel2.Size = panel1.Size; // optional 
    } 

另一種方法是使用View + Other Windows + Document Layout。您可以將內部面板拖放到外部容器(表單)。但是,您必須手動編輯位置屬性。

+0

+1:這是我總是隱藏*一個面板後面的另一個面板,當我不想有不同的'UserControl'選項實例的麻煩。如果有一種設計友好的重疊面板的方式會很好,就像隱藏的選項卡一樣。 – IAbstract

+0

@IAbstract - 檢查此:http://stackoverflow.com/questions/2340566/creating-wizards-for-windows-forms-in-c/2342320#2342320 –

0

它是絕對有可能有重疊的面板

你面臨的問題是,GUI編輯器把你的面板當作容器(這是真的),只要你放置一個面板(包括其他面板) 「嵌套」在此容器中。

要避免此行爲,請首先放置一個面板並適當放置/調整大小。然後右鍵單擊它並選擇「鎖定控件」。這將鎖定所有當前的表單控件,並且您將能夠將新控件(包括面板)直接放置在它們上方,而不用擔心某些東西將被嵌套或以某種方式放置在現有容器內。

當然,你的控件可以重疊 - 只考慮訂單或控制創作,這也將在表單定義它們的Z順序 - 控制以後添加,後來繪製的,因此定位在那些之上較早加入。

編輯:不幸的是我沒有我的回答完全正確。鎖定面板並不能阻止他們完全吸入控制位置。但是在部分重疊的情況下,兩個容器都是在相同的深度上創建的,所以在面板重疊的情況下不存在這個問題,正如問題中提到的那樣。

+2

如果Lock Controls以這種方式工作,那將會很不錯。實際上,鎖定的面板仍然會吸住重疊的面板。嘗試一下。 –

+0

謝謝!!!我看到這樣的鎖控制如何做:) :))順便說一句,如何標記正確的答案爲正確? –

+0

@Hand Passant:嗯......我在發佈我的答案之前檢查了它,但現在我發現有時它不起作用。無論如何,只有將面板完全置於現有容器內時,面板纔會被吸起來,重疊仍然是可能的。但我會糾正我的回答 –

0

小組有一個名爲位置的屬性,您可以根據需要進行修改。只要你設法放置你的面板,使其得到正確的父母,你可以通過稍後改變位置屬性來改變位置。真的不需要將設計代碼放入構造函數或其他任何東西中。

並把在正確的父面板,只是有家長選擇並雙擊面板控件工具欄上,而不是手動拖動它到表單中。真的沒有必要試圖與這個設計師對抗。