我尝试使用几个按钮动态生成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)
现在我无法弄清楚为什么第二个FlowLayoutPanel(黄色)如此之大。它不应该。它与第一个面板(它在foreach中)完全相同,然而,它添加了所有这些空白(黄色空间)。
我发现,逐行调试时,第二个面板随着按钮的增加而增长(就好像它认为它们得到了一条新线而不是放在侧面,如果可以的话),而它没有将按钮添加到第一个面板时执行此操作。
更新 所以我从flowLayoutPanels中移除了对接,我现在可以看到问题实际上是TableLayoutPanel tlpButtons!
从我可以收集的内容来看,它正在调整桌面的大小,好像里面的控件没有对接。看:
所以问题仍然存在,为什么这个TableLayoutPanel没有说明FLP的对接?