I suggest using 1 form and using a tabcontrol. but hide its tabs.
I just posted the same thing on that codeproject article. Because its way overkill the way they have done it.
here is an example of hiding them tabs at runtime, but not and design time.
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace customControls
{
public class TabControlEx : TabControl
{
/// <summary>
/// Gets or sets a value indicating whether the tab headers should be drawn
/// </summary>
[
Description("Gets or sets a value indicating whether the tab headers should be drawn"),
DefaultValue(true)
]
public bool ShowTabHeaders { get; set; }
public TabControlEx()
: base()
{
}
protected override void WndProc(ref Message m)
{
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (!ShowTabHeaders && m.Msg == 0x1328 && !DesignMode)
m.Result = (IntPtr)1;
else
base.WndProc(ref m);
}
}
}