It the layout is simple to calculate then it gets to be pretty hard to make TLP pay off. Which is a control that works very well in the designer but is pretty awkward when you have an unpredictable number of controls.
This will work fine as well, a lot less code and one less control to slow your UI down:
protected override void OnResize(EventArgs e) {
for (int ix = 0; ix < Controls.Count; ++ix) {
int y1 = this.ClientSize.Height * ix / Controls.Count;
int y2 = this.ClientSize.Height * (ix + 1) / Controls.Count;
Controls[ix].Bounds = new Rectangle(0, y1, this.ClientSize.Width, y2-y1);
}
base.OnResize(e);
}
protected override void OnLoad(EventArgs e) {
OnResize(e);
base.OnLoad(e);
}