2012-11-05 47 views
1

可能重複:
Panel.Dock Fill ignoring other Panel.Dock setting板將無法靠岸,我希望他們在的WinForms

看來,當我把我的面板中的WinForms我得到意想不到的效果。如果我有3個面板,並且我將它們全部停靠在頂部,以便希望它們都是一個接一個,那麼我會讓最後一個停靠在應用程序的最頂層,而不是最後一個停靠面板的底部。

我想我對winforms面板中的dock屬性是如何工作感到困惑!每次我嘗試佈置我的應用程序時,我都會頭痛,因爲一個面板想要停靠在我不想要的地方。

+1

是你有可能共享代碼或圖片向我們展示你想達到什麼目的?會更容易回答然後 – Amitd

+0

您是否嘗試過設置z順序?我似乎記得,可能會影響對接。 –

+0

確保面板不包含在彼此之內。 – Kami

回答

6

使用Visual Studio中的「document outline」視圖查看窗體的層次結構。您可以確保所有面板都處於同一級別,位於同一父級下,並且您可以對其進行重新排序以更改對接行爲/優先級。

1

我做了一些更多的研究,發現這個question在stackoverflow上 一旦我打開窗口,並在層次結構中移動面板,它停靠了我的預期和想要的。我知道必須有一些我可能會陷入的控制層級。

+0

請不要複製答案,原始問題的鏈接就夠了。 –

+0

當他已經回答這個問題時,我正在輸入它。我沒有看到羅曼的回答,因爲我發佈了.. –

0

YPU應該檢查this

,你可以試着這樣做:

 public partial class Form1 : Form 
     { 
      public Form1() 
      { 
       InitializeComponent(); 

       CreatePanels(); 
      } 

      private void CreatePanels() 
      { 

//YOu should create panelGlobal on your winform and set DockStyle.Fill 
       panelGlobal.Controls.Add(CreatePanel("topPanel",DockStyle.Top,Color.Red)); 
       panelGlobal.Controls.Add(CreatePanel("bottomPAnel", DockStyle.Bottom, Color.Gray)); 
       panelGlobal.Controls.Add(CreatePanel("fillPanel",DockStyle.Fill,Color.Snow)); 
      } 

      private Panel CreatePanel(string panelName, DockStyle dockStyle,Color color) 
      { 
       return new Panel() { Name = panelName, Dock = dockStyle , BackColor=color}; 
      } 
     } 
相關問題