The answer is really simple....
public void nav(Form form, Panel panel)
{
form.TopLevel = false;
form.FormBorderStyle = FormBorderStyle.None;
form.Parent = panel;
form.Dock = DockStyle.Fill;
form.Show();
}
....and to remove it, just set the form's parent to null - if you want to show it by itself, you'll have to reset the borderstyle/toplevel/etc. this code assumes it'll always be in a container.
public void navclose(Form form)
{
form.Parent = null;
}