C # Форма Windows: При закрытии Do [Процесс] - PullRequest
23 голосов
/ 25 мая 2010

Как мне заставить мою форму окна что-то делать, когда она закрыта?

Ответы [ 6 ]

32 голосов
/ 25 мая 2010

Обработка события FormClosed.

Для этого перейдите на вкладку «События» в окне «Свойства» и дважды щелкните событие FormClosed, чтобы добавить для него обработчик.

Затем вы можете поместить свой код в сгенерированный обработчик MyForm_FormClosed.

Вы также можете сделать это, переопределив метод OnFormClosed; Для этого введите override onformcl в окне кода и OnFormClosed из IntelliSense.

Если вы хотите предотвратить закрытие формы, обработайте событие FormClosing и установите e.Cancel в true.

15 голосов
/ 25 мая 2010

Или другой альтернативой является переопределение методов OnFormClosed () или OnFormClosing () из System.Windows.Forms.Form.

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

События более полезны для одного или двух случаев, если вы делаете то же самое.

public class FormClass : Form
{
   protected override void OnFormClosing(FormClosingEventArgs e)
   {
        base.OnFormClosing(e);
        // Code
   } 
}
8 голосов
/ 25 мая 2010

WinForms имеет два события, которые вы можете посмотреть.

Первое событие FormClosing происходит до того, как форма действительно закрыта. В этом случае вы все равно можете получить доступ к любым элементам управления и переменным в классе формы. Вы также можете отменить закрытие формы, установив e.Cancel = true; (где e - это System.Windows.Forms.FormClosingEventArgs, отправленное в качестве второго аргумента FormClosing).

Второе событие FormClosed происходит после закрытия формы. На данный момент вы не можете получить доступ к каким-либо элементам управления, которые были в форме, хотя вы все еще можете выполнять очистку переменных (например, Закрытие управляемых ресурсов).

3 голосов
/ 25 мая 2010

Добавьте обработчик события к событию FormClosed для вашей формы.

public class Form1
{

    public Form1()
    {    
        this.FormClosed += MyClosedHandler;
    }

    protected void MyClosedHandler(object sender, EventArgs e)
    {
        // Handle the Event here.
    }
}
2 голосов
/ 25 мая 2010
 public FormName()
 {
      InitializeComponent();
      this.FormClosed += FormName_FormClosed;
 }

private void FormName_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
{
   //close logic here
}
0 голосов
/ 16 октября 2013

Синтаксис:

   form_name.ActiveForm.Close();

Пример:

   {
         Form1.ActiveForm.close();
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...