Saving the form’s position and restoring it on startup is a simple process when using the Settings functionality that’s saved with each user of your application.
Create a few settings in your Settings tab for the project and set them as User scope. Use the below picture as your guide:

Settings
In the form you want to save add the following text to your FormClosing, and Load events:
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (this.WindowState != FormWindowState.Minimized)
{
Properties.Settings.Default.MainForm_WindowState = this.WindowState;
Properties.Settings.Default.MainForm_Location = this.Location;
Properties.Settings.Default.MainForm_Size = this.Size;
}
Properties.Settings.Default.Save();
}
private void MainForm_Load(object sender, EventArgs e)
{
if (Properties.Settings.Default.MainForm_WindowState == FormWindowState.Maximized)
{
this.WindowState = FormWindowState.Maximized;
}
else
{
this.WindowState = Properties.Settings.Default.MainForm_WindowState;
this.Location = Properties.Settings.Default.MainForm_Location;
if (Properties.Settings.Default.MainForm_Size.IsEmpty)
{
this.Width = Screen.GetWorkingArea(this).Width - 200;
this.Height = Screen.GetWorkingArea(this).Height - 100;
}
else
{
this.Size = Properties.Settings.Default.MainForm_Size;
}
if (this.Top < 0)
this.Top = 0;
}
}
You'll notice that we're checking to only save when not minimized. We're also ensuring that the form is within view and is not somehow off the sceeen.