I tried showing the child with the MDI container form as owner, but caused an exception for me. You could manually set the location before showing the child as follows:
Form2 f = new Form2();
f.MdiParent = this;
f.StartPosition = FormStartPosition.Manual;
f.Location = new Point((this.ClientSize.Width - f.Width) / 2,
(this.ClientSize.Height - f.Height) / 2);
f.Show();
EDIT:
f.StartPosition = FormStartPosition.CenterScreen;
is the correct way to center an mdichild on its parent form.