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
[<System.ComponentModel.Browsable(false)>]
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.
Дополнительные сведения об обработке событий см. в разделе Обработка и вызов событий.