Закрыть окно си шарп

Закрытие окна или диалогового окна (WPF .NET)

В этой статье вы узнаете о различных способах закрытия окна или диалогового окна. Пользователь может закрыть окно с помощью элементов в неклиентской области, включая следующие:

  • Элемент Закрыть меню Система.
  • Нажатие клавиш ALT+F4 .
  • Нажатие кнопки Закрыть.
  • Нажатие клавиши ESC , если свойство кнопки IsCancel имеет значение true в модальном окне.

При проектировании окна предоставьте больше механизмов для клиентской области для закрытия окна. Ниже приведены некоторые из общих элементов оформления окна, которые используются для его закрытия.

  • Элемент Выход в меню Файл, обычно для главных окон приложений.
  • Элемент Закрыть в меню Файл, как правило, применим для вторичных окон приложений.
  • Кнопка Отменить, обычно для модального диалогового окна.
  • Кнопка Закрыть, обычно для немодального диалогового окна.

После закрытия окна нельзя использовать тот же экземпляр объекта для повторного открытия окна.

Дополнительные сведения о жизненном цикле окна см. в разделе Обзор окон WPF: время существования окна.

Закрытие модального окна

При закрытии окна, открытого ShowDialog с помощью метода , присвойте свойству DialogResult true значение или false , чтобы указать состояние «принято» или «отменено» соответственно. Как только свойству DialogResult присваивается значение, окно закрывается. В следующем коде DialogResult показано задание свойства :

private void okButton_Click(object sender, RoutedEventArgs e) => DialogResult = true; private void cancelButton_Click(object sender, RoutedEventArgs e) => DialogResult = false; 
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 

Можно также вызвать Close метод . Close Если используется метод , свойству DialogResult присваивается значение false .

Читайте также:  Order dict python сортировка

После закрытия окна его нельзя открыть с тем же экземпляром объекта. При попытке отобразить то же окно InvalidOperationException возникает исключение . Вместо этого создайте новый экземпляр окна и откройте его.

Закрытие немодного окна

При закрытии окна, открытого Show с помощью метода , используйте Close метод . Следующий код демонстрирует закрытие безмодерного окна:

private void closeButton_Click(object sender, RoutedEventArgs e) => Close(); 
Private Sub closeButton_Click(sender As Object, e As RoutedEventArgs) Close() End Sub 

Закрыть с помощью IsCancel

Для Button.IsCancel свойства можно задать значение , true чтобы клавиша ESC автоматически закрывала окно. Это работает только при открытии окна с помощью ShowDialog метода .

Скрытие окна

Вместо закрытия окна его можно скрыть с помощью Hide метода . Скрытое окно можно открыть повторно, в отличие от закрытого окна. Если вы собираетесь повторно использовать экземпляр объекта окна, скройте окно, а не закрывайте его. Следующий код демонстрирует скрытие окна:

private void saveButton_Click(object sender, RoutedEventArgs e) => Hide(); 
Private Sub saveButton_Click(sender As Object, e As RoutedEventArgs) Hide() End Sub 

Отмена закрытия и скрытия

Если вы спроектировали кнопки так, чтобы скрыть окно, а не закрывать его, пользователь по-прежнему может обойти это и закрыть окно. Элемент Закрыть системного меню и кнопка Закрыть в не клиентской области окна закроют окно, а не скрывают его. Рассмотрите этот сценарий, если вы хотите скрыть окно, а не закрывать его.

Если окно отображается модально с ShowDialogпараметром DialogResult , свойство будет иметь значение null , если окно скрыто. Вам потребуется передать состояние обратно в вызывающий код, добавив собственное свойство в окно.

При закрытии Closing окна возникает событие . Обработчику передается CancelEventArgsобъект , который реализует Cancel свойство . Присвойте этому свойству значение , true чтобы предотвратить закрытие окна. В следующем коде показано, как отменить закрытие и вместо этого скрыть окно:

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 

В некоторых случаях вы не хотите скрывать окно, но на самом деле не позволить пользователю закрыть его. Дополнительные сведения см. в статье Обзор окон WPF: отмена закрытия окон.

См. также раздел

Источник

Form. Close Метод

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

member this.Close : unit -> unit

Исключения

Форма была закрыта при создании дескриптора.

Нельзя вызывать этот метод из события Activated, если свойство WindowState задано как Maximized.

Комментарии

При закрытии формы все ресурсы, созданные в объекте , закрываются, а форма удаляется. Вы можете предотвратить закрытие формы во время выполнения, обработав Closing событие и задав Cancel свойство объекта , CancelEventArgs переданное в качестве параметра обработчику событий. Если закрываемая форма является начальной формой приложения, приложение завершается.

Два условия, когда форма не удаляется Close , — если (1) она является частью приложения многодокументного интерфейса (MDI), а форма не отображается; (2) форма отображается с помощью ShowDialog. В таких случаях необходимо вызвать Dispose вручную, чтобы пометить все элементы управления формы для сборки мусора.

При вызове Close метода в , отображаемом Form как немодированное окно, нельзя вызвать Show метод , чтобы сделать форму видимой, так как ресурсы формы уже освобождены. Чтобы скрыть форму и сделать ее видимой Control.Hide , используйте метод .

До платформа .NET Framework 2.0 Form.Closed события и Form.Closing не вызываются при вызове Application.Exit метода для выхода из приложения. Если у вас есть код проверки в любом из этих событий, которые необходимо выполнить, следует вызвать Form.Close метод для каждой открытой формы по отдельности перед вызовом Exit метода .

Источник

Close Form in C#

Close Form in C#

  1. Close Form With the Application.Exit() Function in C#
  2. Close Form With the Form.Close() Function in C#

This tutorial will introduce the methods to close a form in C#.

Close Form With the Application.Exit() Function in C#

The Application.Exit() function is used to close the entire application in C#. The Application.Exit() function informs all message loops to terminate execution and closes the application after all the message loops have terminated. We can also use the Application.Exit() function to close a form in a Windows Form application if our application only consists of one form. See the following example.

using System; using System.Windows.Forms;  namespace close_form   public partial class Form1 : Form    public Form1()    InitializeComponent();  >   private void button3_Click(object sender, EventArgs e)    Application.Exit();  >  > > 

In the above code, we closed the form in our Windows Form application that only consists of one form with the Application.Exit() function in C#. The only drawback with this approach is that the Application.Exit() function exits the whole application. So, if the application contains more than one form, all the forms will be closed.

Close Form With the Form.Close() Function in C#

The Form.Close() function is used to close a Form in a Windows Form application in C#. We can use the Form.Close() function inside the button click event to close the specified form by clicking a button. See the following example.

using System; using System.Windows.Forms;  namespace close_form   public partial class Form1 : Form    public Form1()    InitializeComponent();  >   private void button1_Click(object sender, EventArgs e)    this.Close();  >   > > 

In the above code, we closed the form in our Windows Form application that only consists of one form with the Form.Close() function in C#. Unlike the previous method, this method only closes a single Form in our application. This method can be used to close a single form in an application that consists of multiple forms.

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

Related Article — Csharp GUI

Источник

Form. Closing Событие

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Происходит при закрытии формы.

public: event System::ComponentModel::CancelEventHandler ^ Closing;
public event System.ComponentModel.CancelEventHandler Closing;
[System.ComponentModel.Browsable(false)] public event System.ComponentModel.CancelEventHandler Closing;
[System.ComponentModel.Browsable(false)] public event System.ComponentModel.CancelEventHandler? Closing;
member this.Closing : System.ComponentModel.CancelEventHandler 
[] member this.Closing : System.ComponentModel.CancelEventHandler 
Public Custom Event Closing As CancelEventHandler 

Тип события

Примеры

В следующем примере используется Closing для проверки того, изменился ли текст в TextBox . Если это так, пользователю будет предложено сохранить изменения в файле.

private: void Form1_Closing( Object^ /*sender*/, System::ComponentModel::CancelEventArgs^ e ) < // Determine if text has changed in the textbox by comparing to original text. if ( textBox1->Text != strMyOriginalText ) < // Display a MsgBox asking the user to save changes or abort. if ( MessageBox::Show( "Do you want to save changes to your text?", "My Application", MessageBoxButtons::YesNo ) == ::DialogResult::Yes ) < // Cancel the Closing event from closing the form. e->Cancel = true; // Call method to save file. > > > 
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) < // Determine if text has changed in the textbox by comparing to original text. if (textBox1.Text != strMyOriginalText) < // Display a MsgBox asking the user to save changes or abort. if(MessageBox.Show("Do you want to save changes to your text?", "My Application", MessageBoxButtons.YesNo) == DialogResult.Yes) < // Cancel the Closing event from closing the form. e.Cancel = true; // Call method to save file. >> > 
 Private Sub Form1_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing ' Determine if text has changed in the textbox by comparing to original text. If textBox1.Text <> strMyOriginalText Then ' Display a MsgBox asking the user to save changes or abort. If MessageBox.Show("Do you want to save changes to your text?", "My Application", MessageBoxButtons.YesNo) = DialogResult.Yes Then ' Cancel the Closing event from closing the form. e.Cancel = True End If ' Call method to save file. End If End Sub End Class 

Комментарии

Событие Closing устарело, начиная с платформа .NET Framework 2.0; вместо него используйте FormClosing событие .

Событие Closing возникает при закрытии формы. При закрытии формы освобождаются все ресурсы, созданные в объекте , и форма удаляется. Если отменить это событие, форма остается открытой. Чтобы отменить закрытие формы, присвойте свойству Cancel переданного CancelEventArgs обработчику событий значение true .

Если форма отображается как модальное диалоговое окно, нажатие кнопки Закрыть (кнопка с X в правом верхнем углу формы) приводит к скрытию формы, а DialogResult свойству присваивается значение DialogResult.Cancel . Вы можете переопределить значение, присвоенное свойству DialogResult , когда пользователь нажимает кнопку Закрыть , задав DialogResult свойство в обработчике событий для Closing события формы.

При вызове Close метода в окне, отображаемом Form в виде немодированного, нельзя вызвать Show метод , чтобы сделать форму видимой, так как ресурсы формы уже освобождены. Чтобы скрыть форму, а затем сделать ее видимой Control.Hide , используйте метод .

События Form.Closed и Form.Closing не вызываются при вызове Application.Exit метода для выхода из приложения. Если у вас есть код проверки в любом из этих событий, которые необходимо выполнить, необходимо вызвать Form.Close метод для каждой открытой формы по отдельности перед вызовом Exit метода .

Если форма является родительской формой MDI, Closing события всех дочерних форм MDI вызываются перед событием родительской Closing формы MDI. Кроме того, Closed события всех дочерних форм MDI вызываются перед событием Closed родительской формы MDI. Отмена Closing события дочерней формы MDI не препятствует возникновению Closing события родительской формы MDI. Однако при отмене события будет задано true Cancel свойство CancelEventArgs объекта , передаваемое в качестве параметра в родительскую форму. Чтобы принудительно закрыть все родительские и дочерние формы MDI, присвойте свойству Cancel значение false в родительской форме MDI.

Дополнительные сведения об обработке событий см. в разделе Обработка и вызов событий.

Применяется к

См. также раздел

Источник

Оцените статью