动态生成的FlowLayoutPanel具有不同的输出

时间:2017-03-02 12:40:47

标签: winforms tablelayoutpanel flowlayoutpanel

我尝试使用几个按钮动态生成2个FlowLayoutPanel。

    private void DrawButtons() {
        tlpButtons.Controls.Clear();

        foreach (var type in Globals.ThisAddIn.TicketTypes.OrderBy(x => x.Name)) {
            tlpButtons.Controls.Add(new Label() { Text = type.Name, Dock = DockStyle.Fill });
            var container = new FlowLayoutPanel() { Dock = DockStyle.Fill, AutoSize = true, AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly, BackColor = Color.Yellow, FlowDirection = FlowDirection.LeftToRight };
            foreach (var skill in Globals.ThisAddIn.Skills.OrderBy(x => x.Name)) {
                container.Controls.Add(new Button() { Text = skill.Name });
                MessageBox.Show(tlpButtons.RowCount.ToString());
            }
            tlpButtons.Controls.Add(container);
        }
    }

这是它输出的内容: 让我来解释一下你所看到的。

我有TableLayoutPanel tlpOuter (粉红色),有1列(100%)和2行。第1行:AutoSize,第2行:100%

在第一行中,我有另一个TableLayoutPanel tplButtons (橙色),包含1列(100%)和1行(AutoSize,GrowStyle:Rows)

output

现在我无法弄清楚为什么第二个FlowLayoutPanel(黄色)如此之大。它不应该。它与第一个面板(它在foreach中)完全相同,然而,它添加了所有这些空白(黄色空间)。

我发现,逐行调试时,第二个面板随着按钮的增加而增长(就好像它认为它们得到了一条新线而不是放在侧面,如果可以的话),而它没有将按钮添加到第一个面板时执行此操作。

更新 所以我从flowLayoutPanels中移除了对接,我现在可以看到问题实际上是TableLayoutPanel tlpButtons!

从我可以收集的内容来看,它正在调整桌面的大小,好像里面的控件没有对接。看:enter image description here

所以问题仍然存在,为什么这个TableLayoutPanel没有说明FLP的对接?

0 个答案:

没有答案