Подтвердить что ты не робот

С# Windows Form: On Close Do [Process]

Как я могу получить форму Windows, чтобы что-то сделать, когда она закрыта.

4b9b3361

Ответ 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();
   }