public class CascadeLayout : LayoutEngine
private static CascadeLayout _instance;
private CascadeLayout() { }
public static LayoutEngine Instance
=> _instance = _instance ?? new CascadeLayout();
public override bool Layout(object container, LayoutEventArgs layoutEventArgs)
var panel = (CascadeLayoutPanel)container;
var size = panel.ClientSize;
var count = panel.Controls.Count;
size.Width = size.Width - gap * (count - 1);
size.Height = size.Height - gap * (count - 1);
var bounds = new Rectangle(Point.Empty, size);
foreach (Control child in panel.Controls)