2015-06-08 390 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