--- title: How to close a window description: Learn about how to close a window or dialog box in Windows Foundation Presentation (WPF). You'll also learn how to return a result from the window or dialog box. ms.date: "03/24/2021" dev_langs: - "csharp" - "vb" helpviewer_keywords: - "modeless dialog boxes [WPF]" - "modal dialog boxes [WPF]" - "dialog boxes [WPF]" - "message boxes [WPF]" --- # How to close a window or dialog box (WPF .NET) In this article, you'll learn about the different ways to close a window or dialog box. A user can close a window by using the elements in the non-client area, including the following: - The **Close** item of the **System** menu. - Pressing ALT + F4. - Pressing the **Close** button. - Pressing ESC when a button has the property set to `true` on a modal window. When designing a window, provide more mechanisms to the client area to close a window. Some of the common design elements on a window that are used to close it include the following: - An **Exit** item in the **File** menu, typically for main application windows. - A **Close** item in the **File** menu, typically on a secondary application window. - A **Cancel** button, typically on a modal dialog box. - A **Close** button, typically on a modeless dialog box. > [!IMPORTANT] > Once a window is closed, the same object instance can't be used to reopen the window. For more information about the life of a window, see [Overview of WPF windows: Window lifetime](index.md#window-lifetime). ## Close a modal window When closing a window that was opened with the method, set the property to either `true` or `false` to indicate an "accepted" or "canceled" state, respectively. As soon as the `DialogResult` property is set to a value, the window closes. The following code demonstrates setting the `DialogResult` property: :::code language="csharp" source="snippets/how-to-close-window-dialog-box/csharp/Menus.xaml.cs" id="CloseDialog"::: :::code language="vb" source="snippets/how-to-close-window-dialog-box/vb/Menus.xaml.vb" id="CloseDialog"::: You can also call the method. If the `Close` method is used, the property is set to `false`. Once a window has been closed, it can't be reopened with the same object instance. If you try to show the same window, a is thrown. Instead, create a new instance of the window and open it. ## Close a modeless window When closing a window that was opened with the method, use the method. The following code demonstrates closing a modeless window: :::code language="csharp" source="snippets/how-to-close-window-dialog-box/csharp/Menus.xaml.cs" id="CloseNormal"::: :::code language="vb" source="snippets/how-to-close-window-dialog-box/vb/Menus.xaml.vb" id="CloseNormal"::: ## Close with IsCancel The property can be set to `true` to enable the ESC key to automatically close the window. This only works when the window is opened with method. :::code language="xaml" source="snippets/how-to-close-window-dialog-box/csharp/Window1.xaml" id="CancelButton"::: ## Hide a window Instead of closing a window, a window can be hidden with the method. A hidden window can be reopened, unlike a window that has been closed. If you're going to reuse a window object instance, hide the window instead of closing it. The following code demonstrates hiding a window: :::code language="csharp" source="snippets/how-to-close-window-dialog-box/csharp/Menus.xaml.cs" id="Hide"::: :::code language="vb" source="snippets/how-to-close-window-dialog-box/vb/Menus.xaml.vb" id="Hide"::: ## Cancel close and hide If you've designed your buttons to hide a window instead of closing it, the user can still bypass this and close the window. The **Close** item of the system menu and the **Close** button of the non-client area of the window, will close the window instead of hiding it. Consider this scenario when your intent is to hide a window instead of closing it. > [!CAUTION] > If a window is shown modally with , the property will be set to `null` when the window is hidden. You'll need to communicate state back to the calling code by adding your own property to the window. When a window is closed, the event is raised. The handler is passed a , which implements the property. Set that property to `true` to prevent a window from closing. The following code demonstrates how to cancel the closure and instead hide the window: :::code language="csharp" source="snippets/how-to-close-window-dialog-box/csharp/Margins.xaml.cs" id="CancelAndHide"::: :::code language="vb" source="snippets/how-to-close-window-dialog-box/vb/Margins.xaml.vb" id="CancelAndHide"::: There may be times where you don't want to hide a window, but actually prevent the user from closing it. For more information, see [Overview of WPF windows: Cancel window closure](index.md#cancel-window-closure). ## See also - [Overview of WPF windows](index.md) - [Dialog boxes overview](dialog-boxes-overview.md) - [How to open a window or dialog box](how-to-open-window-dialog-box.md) - - - - - -