Как я могу получить форму Windows, чтобы что-то сделать, когда она закрыта.
С# Windows Form: On Close Do [Process]
Ответ 1
Обработать событие FormClosed
.
Для этого перейдите на вкладку "События" в окне "Свойства" и дважды щелкните событие FormClosed
, чтобы добавить обработчик для него.
Затем вы можете поместить свой код в сгенерированный обработчик MyForm_FormClosed
.
Вы также можете это сделать, переопределив метод OnFormClosed
; для этого введите override onformcl
в окне кода и OnFormClosed
из IntelliSense.
Если вы хотите, чтобы форма не закрывалась, обработайте событие FormClosing
и установите e.Cancel
на true
.
Ответ 2
Или другой вариант - переопределить методы OnFormClosed() или OnFormClosing() из System.Windows.Forms.Form.
Следует ли использовать этот метод, зависит от контекста проблемы и более полезен, если форма будет подклассифицирована несколько раз, и все они должны выполнить один и тот же код.
События более полезны для одного или двух экземпляров, если вы делаете то же самое.
public class FormClass : Form
{
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
// Code
}
}
Ответ 3
У WinForms есть два события, которые вы можете посмотреть.
Во-первых, FormClosing
событие происходит до того, как форма фактически закрыта. В этом случае вы можете получить доступ к любым элементам управления и переменным в классе формы. Вы также можете отменить форму, установив e.Cancel = true;
(где e
является System.Windows.Forms.FormClosingEventArgs
, отправленным как второй аргумент в FormClosing
).
Во-вторых, событие FormClosed
происходит после закрытия формы. На данный момент вы не можете получить доступ к элементам управления, которые были в форме, хотя вы по-прежнему можете выполнять очистку переменных (например, закрытие управляемых ресурсов).
Ответ 4
Добавьте обработчик событий в FormClosed событие для вашей формы.
public class Form1
{
public Form1()
{
this.FormClosed += MyClosedHandler;
}
protected void MyClosedHandler(object sender, EventArgs e)
{
// Handle the Event here.
}
}
Ответ 5
public FormName()
{
InitializeComponent();
this.FormClosed += FormName_FormClosed;
}
private void FormName_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
{
//close logic here
}
Ответ 6
Синтаксис:
form_name.ActiveForm.Close();
Пример:
{
Form1.ActiveForm.close();
}