C# Windows Form: на завершении действительно [обрабатывают]

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

23
задан sooprise 25 May 2010 в 15:11
поделиться

5 ответов

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

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

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

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

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

34
ответ дан 29 November 2019 в 01:14
поделиться
 public FormName()
 {
      InitializeComponent();
      this.FormClosed += FormName_FormClosed;
 }

private void FormName_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
{
   //close logic here
}
2
ответ дан 29 November 2019 в 01:14
поделиться

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

public class Form1
{

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

    protected void MyClosedHandler(object sender, EventArgs e)
    {
        // Handle the Event here.
    }
}
3
ответ дан 29 November 2019 в 01:14
поделиться

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

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

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

8
ответ дан 29 November 2019 в 01:14
поделиться

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

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

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

public class FormClass : Form
{
   protected override void OnFormClosing(FormClosingEventArgs e)
   {
        base.OnFormClosing(e);
        // Code
   } 
}
15
ответ дан 29 November 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: