2015-06-08 653 views
2

我在父容器中有流佈局面板停靠(填充)。父容器DockStyle設置爲Top。另外,我將FlowDirection屬性設置爲LeftToRight用於流佈局面板,將兩個容器的AutoSize屬性設置爲True。流佈局面板的主要功能是保持動態添加按鈕。FlowLayoutPanel自動調整大小

的代碼創建按鈕

Button productButton = new Button(); 
productButton.AutoSize = true; 
productButton.AutoEllipsis = false; 
productButtonPanel.Controls.Add(productButton); 

有足夠的空間,以保持10-12按鈕在一個線和FlowLayoutPanel的是做偉大的。它將所有新按鈕保留在一行中。 問題是,即使沒有必要額外的空間(「新建按鈕行」),每次添加新按鈕時,FlowLayoutPanel都會調整(垂直)。

回答

1

也許AutoSizeMode = AutoSizeMode.GrowAndShrink;將解決您的問題。例如。

 Form f = new Form(); 
     Panel parent = new Panel { Dock = DockStyle.Top, BackColor = Color.Blue, AutoSize = true }; 

     FlowLayoutPanel p1 = new FlowLayoutPanel { FlowDirection = System.Windows.Forms.FlowDirection.LeftToRight }; 
     p1.BackColor = Color.Red; 
     p1.AutoSize = true; 
     p1.AutoSizeMode = AutoSizeMode.GrowAndShrink; 

     Button b1 = new Button { Text = "Button1", AutoSize = true, AutoEllipsis = false }; 
     p1.Controls.Add(b1); 
     b1.Click += delegate { 
      Button b2 = new Button { Text = "Button" + (p1.Controls.Count + 1), AutoSize = true, AutoEllipsis = false }; 
      p1.Controls.Add(b2); 
     }; 
     parent.Controls.Add(p1); 
     f.Controls.Add(parent); 
     Application.Run(f); 
0

最後我解決了這個問題。流佈局面板停靠在表格佈局面板中? 似乎表佈局面板正在通過子流佈局面板的自動調整進行控制。 這個問題的解決方法是:

Table Layout Panel (autosize = true) 
    Panel (autosize = true, Dock=Fill) 
     Table Layout Panel (autosize = true, Dock=Fill) 

更多細節: FlowLayoutPanel Height bug when using AutoSize