Save / Restore Windows App Form Location
Save & Restore the screen size and location of a windows form
The following illustrates how to save & restore the location of a windows application. Net result is that when an application is started, its form is in same location and the same size that it was when it was last closed.
Create user properties
Create 2 user properties in the Windows application project.Property Name | Type | Scope | Value |
---|---|---|---|
WinLocation | System.Drawing.Point | User | 0,0 |
WinSize | System.Drawing.Size | User | 0,0 |
Create methods to save and restore window location and size
Save Methodprivate void SaveSizeAndPosition() { // save the form location & size to the property values Properties.Settings.Default.WinLocation = this.Location; Properties.Settings.Default.WinSize = this.Size; // save the property settings Properties.Settings.Default.Save(); }
Restore Method
private void RestorePreviousLocation() { do { if (Properties.Settings.Default.WinSize.Width <= 0 || Properties.Settings.Default.WinSize.Height <= 0) { // width / height not set, don't attempt to update the size/location of the window // do the upgrade of the property settings Properties.Settings.Default.Upgrade(); // get out now break; } var loc = Properties.Settings.Default.WinLocation; var size = Properties.Settings.Default.WinSize; { // if any part of the saved form location is off the screen, don't restore that size/location. get out now // get the screen size var screenSize = Screen.PrimaryScreen.WorkingArea; if (loc.X < 0) break; if (loc.Y < 0) break; if (loc.X + size.Width > screenSize.Width) break; if (loc.Y + size.Height > screenSize.Height) break; } // set the size & location from the property settings this.Location = loc; // Properties.Settings.Default.WinLocation; this.Size = size; // Properties.Settings.Default.WinSize; } while (false); }
Capture Window Events to Call the Save & Restore Methods
Save the window size & location inside the form closing event trap.protected override void OnFormClosing(FormClosingEventArgs e) { base.OnFormClosing(e); // Save the window size & location this.SaveSizeAndPosition(); }
Restore the window size & location inside the form load event trap.
protected override void OnLoad(EventArgs e) { base.OnLoad(e); // restore the previously save size & location this.RestorePreviousLocation(); }