First, I suggest that if it's possible you discontinue use of MDI WinForms. It's an Application Windowing model that is really outmoded, and, it is "quirky," to say the least.
You are right Mdi can't tile borderless child Forms under "normal" circumstances.
I found the standard tiling behavior in Mdi (last time I used it, which was many years ago) so bad that I just wrote my own tiling code.
If you really
have to cascade borderless MdiChild windows here's an ugly hack:
private void Cascade()
{
this.SuspendLayout();
foreach (Form frm in this.MdiChildren) frm.FormBorderStyle = FormBorderStyle.FixedSingle;
this.LayoutMdi(MdiLayout.Cascade);
foreach (Form frm in this.MdiChildren) frm.FormBorderStyle = FormBorderStyle.None;
this.ResumeLayout();
}
But, don't blame me if this leads to some other strange behavior :)