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调整大小(垂直)每次我添加新的按钮,甚至当额外的空间("新按钮线")是不必要的。

FlowLayoutPanel autosize

最后我解决了这个问题。流布局面板停靠在表布局面板?似乎表布局面板正在谈论控制子流布局面板的自动调整大小。这个问题的解决方法是:

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

更多细节:使用AutoSize

时的FlowLayoutPanel高度错误

也许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);