我在父容器中有流布局面板(Fill)。 Parent容器DockStyle设置为Top。此外,我为两个容器将FlowDirection属性设置为LeftToRight for flow layout面板,将AutoSize属性设置为True。流布局面板的主要功能是保持动态添加按钮。
创建按钮的代码
Button productButton = new Button();
productButton.AutoSize = true;
productButton.AutoEllipsis = false;
productButtonPanel.Controls.Add(productButton);
有足够的空间将10-12个按钮保留在一行中,FlowLayoutPanel效果很好。它将所有新按钮保持在一行中。 问题是FlowLayoutPanel每次添加新Button时都会(垂直)调整大小,即使没有必要使用额外的空格(“新按钮行”)。
答案 0 :(得分: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);
答案 1 :(得分:1)
最后我解决了这个问题。 Flow Layout Panel停靠在表布局面板中? 表布局面板似乎正在讨论控制子流布局面板的自动调整。 此问题的解决方法是:
Table Layout Panel (autosize = true)
Panel (autosize = true, Dock=Fill)
Table Layout Panel (autosize = true, Dock=Fill)