In the following code, only the second method works for me (.NET 4.0). FormStartPosition.CenterParent does not center the child form over its parent. Why?
FormStartPosition.CenterParent
Small Change to JYelton's answer
Form2_Load(object sender, EventArgs e) { if (Owner != null && Parent == null && StartPosition == FormStartPosition.CenterParent) Location = new Point(Owner.Location.X + Owner.Width / 2 - Width / 2, Owner.Location.Y + Owner.Height / 2 - Height / 2); }