FlowLayoutPanel自动调整大小

时间:2015-06-08 16:57:10

标签: c# winforms windows-forms-designer flowlayoutpanel

我在父容器中有流布局面板(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时都会(垂直)调整大小,即使没有必要使用额外的空格(“新按钮行”)。

2 个答案:

答案 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)

更多细节: FlowLayoutPanel Height bug when using AutoSize