Есть ли способ заставить кнопку закрытия окна (X) вызывать метод перед тем, как закрыть окно? - PullRequest
1 голос
/ 01 августа 2010

В проекте Windows Form в C # /. Net / Visual Studio 2010, если кто-то нажимает кнопку закрытия окна, я хочу отключить некоторые другие вещи в программе как следствие. Есть ли вызов метода для нажатия «X», который я могу расширить?

Ответы [ 3 ]

10 голосов
/ 01 августа 2010

Два события, которые вы должны использовать: FormClosing и FormClosed.

В .Net Framework версии 2.0 эти события заменили устаревшие Closing и Closed события.

Причиной новых событий было то, что старые не возникали при вызове метода Application.Exit.

Ниже приведен пример использования события FormClosing:

public Form1()
{
    InitializeComponent();
    this.FormClosing += Form1_FormClosing;
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    DialogResult result = MessageBox.Show("Really close this form?", string.Empty, MessageBoxButtons.YesNo);

    if (result == DialogResult.No)
    {
        e.Cancel = true;
    }
}

Этот код просто спрашивает пользователя, хотят ли они закрыть форму, и если выбрано Нет, он отменяет событие.В обработчик событий можно поместить любую логику.


Статья MSDN по Form.Closing здесь здесь и содержит ссылки о том, почему событие устарело.Ссылка для Form.FormClosing здесь

3 голосов
/ 01 августа 2010

Ваш класс окна публикует два события для этой цели:

Закрытие позволяет отменить закрытие, если оно неуместно

Закрыт позволяет реагировать на закрытие.

0 голосов
/ 01 августа 2010

Просто зарегистрируйте обработчик в событии FormClosed .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...