Gets the size and location of a window before being either minimized or maximized.
Assembly: PresentationFramework (in PresentationFramework.dll)
Public ReadOnly Property RestoreBounds As Rect Get
public Rect RestoreBounds { get; }
public: property Rect RestoreBounds { Rect get (); }
member RestoreBounds : Rect
Property Value
Type: System.Windows.RectA Rect that specifies the size and location of a window before being either minimized or maximized.
The restore rectangle is the region occupied by the window before it was minimized or maximized. You can use RestoreBounds to save the last size and location of a window before an application is closed, and retrieve those values the next time an application starts to restore a window to the way a user left it.
If you query RestoreBounds before the window has been shown or after it has been closed, Empty is returned.
Note
|
|---|
|
You cannot get this property when a window is hosted in a browser. |
The following example uses RestoreBounds and isolated storage to ensure the size and location of a window are the same as they were the previous time the window was shown.
<Window x:Class="WindowRestoreBoundsSnippets.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WindowRestoreBoundsSnippets" Closing="MainWindow_Closing" > ... </Window>
Imports System Imports System.ComponentModel Imports System.IO Imports System.IO.IsolatedStorage Imports System.Windows ... Partial Public Class MainWindow Inherits Window Private filename As String = "settings.txt" Public Sub New() InitializeComponent() ' Refresh restore bounds from previous window opening Dim storage As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForAssembly() Try Using stream As New IsolatedStorageFileStream(Me.filename, FileMode.Open, storage) Using reader As New StreamReader(stream) ' Read restore bounds value from file Dim restoreBounds As Rect = Rect.Parse(reader.ReadLine()) Me.Left = restoreBounds.Left Me.Top = restoreBounds.Top Me.Width = restoreBounds.Width Me.Height = restoreBounds.Height End Using End Using Catch ex As FileNotFoundException ' Handle when file is not found in isolated storage, which is when: ' * This is first application session ' * The file has been deleted End Try End Sub Private Sub MainWindow_Closing(ByVal sender As Object, ByVal e As CancelEventArgs) ' Save restore bounds for the next time this window is opened Dim storage As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForAssembly() Using stream As New IsolatedStorageFileStream(Me.filename, FileMode.Create, storage) Using writer As New StreamWriter(stream) ' Write restore bounds value to file writer.WriteLine(Me.RestoreBounds.ToString()) End Using End Using End Sub End Class
using System; using System.ComponentModel; using System.IO; using System.IO.IsolatedStorage; using System.Windows; ... public partial class MainWindow : Window { string filename = "settings.txt"; public MainWindow() { InitializeComponent(); // Refresh restore bounds from previous window opening IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForAssembly(); try { using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(this.filename, FileMode.Open, storage)) using (StreamReader reader = new StreamReader(stream)) { // Read restore bounds value from file Rect restoreBounds = Rect.Parse(reader.ReadLine()); this.Left = restoreBounds.Left; this.Top = restoreBounds.Top; this.Width = restoreBounds.Width; this.Height = restoreBounds.Height; } } catch (FileNotFoundException ex) { // Handle when file is not found in isolated storage, which is when: // * This is first application session // * The file has been deleted } } void MainWindow_Closing(object sender, CancelEventArgs e) { // Save restore bounds for the next time this window is opened IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForAssembly(); using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(this.filename, FileMode.Create, storage)) using (StreamWriter writer = new StreamWriter(stream)) { // Write restore bounds value to file writer.WriteLine(this.RestoreBounds.ToString()); } } }
.NET Framework
Supported in: 4, 3.5, 3.0.NET Framework Client Profile
Supported in: 4, 3.5 SP1-
UIPermission
for permission to query for the size and location of a window's bounding rectangle. Associated enumeration: AllWindows
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note