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 IsCancel 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.
When closing a window that was opened with the ShowDialog method, set the DialogResult 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:
Private Sub okButton_Click(sender As Object, e As RoutedEventArgs)
DialogResult = True
End Sub
Private Sub cancelButton_Click(sender As Object, e As RoutedEventArgs)
DialogResult = False
End Sub
You can also call the Close method. If the Close method is used, the DialogResult 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 InvalidOperationException 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 Show method, use the Close method. The following code demonstrates closing a modeless window:
Private Sub closeButton_Click(sender As Object, e As RoutedEventArgs)
Close()
End Sub
Close with IsCancel
The Button.IsCancel 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 ShowDialog method.
Instead of closing a window, a window can be hidden with the Hide 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:
Private Sub saveButton_Click(sender As Object, e As RoutedEventArgs)
Hide()
End Sub
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 ShowDialog, the DialogResult 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 Closing event is raised. The handler is passed a CancelEventArgs, which implements the Cancel 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:
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// Cancel the closure
e.Cancel = true;
// Hide the window
Hide();
}
Private Sub Window_Closing(sender As Object, e As ComponentModel.CancelEventArgs)
' Cancel the closure
e.Cancel = True
' Hide the window
Hide()
End Sub
The source for this content can be found on GitHub, where you can also create and review issues and pull requests. For more information, see our contributor guide.
.NET Desktop feedback feedback
.NET Desktop feedback is an open source project. Select a link to provide feedback:
Do you want to discover what to do in Microsoft Dynamics 365 Business Central when the actual work for a project is completed? This module explains how to close a project in Business Central.