FlowLayoutPanel autosize
本文关键字:autosize FlowLayoutPanel | 更新日期: 2023-09-27 17:54:28
我在父容器中有流布局面板dock (Fill)。父容器DockStyle设置为Top。此外,我设置FlowDirection属性为左右流布局面板和AutoSize属性为True两个容器。流布局面板的主要功能是动态保存添加的按钮。
创建按钮的代码Button productButton = new Button();
productButton.AutoSize = true;
productButton.AutoEllipsis = false;
productButtonPanel.Controls.Add(productButton);
有足够的空间保持10-12个按钮在一行和FlowLayoutPanel做得很好。它将所有新按钮保存在一行中。问题是,FlowLayoutPanel调整大小(垂直)每次我添加新的按钮,甚至当额外的空间("新按钮线")是不必要的。
最后我解决了这个问题。流布局面板停靠在表布局面板?似乎表布局面板正在谈论控制子流布局面板的自动调整大小。这个问题的解决方法是:
Table Layout Panel (autosize = true)
Panel (autosize = true, Dock=Fill)
Table Layout Panel (autosize = true, Dock=Fill)
更多细节:使用AutoSize
也许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);