Visual C #: выход из проверки программы - PullRequest
1 голос
/ 09 июля 2010

В Visual C # как я могу определить, нажимает ли пользователь кнопку X, чтобы закрыть программу?Я хочу спросить пользователя, хотят ли они выполнить определенное действие перед выходом.У меня в самой программе есть кнопка выхода, и я знаю, что могу кодировать ее следующим образом:

    private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
        DialogResult result;
        if (logfiletextbox.Text != "")
        {
            result = MessageBox.Show("Would you like to save the current logfile?", "Save?", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
            if (result == DialogResult.Yes)
            {
                savelog.PerformClick();
            }
        }
        Environment.Exit(0); //exit program
    }

Но как я могу сделать это для кнопки X, которая уже встроена в программу?

Ответы [ 6 ]

4 голосов
/ 09 июля 2010
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (MessageBox.Show("cancel?", "a good question", MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
            e.Cancel = true;
        }
    }

Это «FormClosing» - событие формы. Веселись, друг.

4 голосов
/ 09 июля 2010

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

Дизайнер форм сделает это автоматически, если вы выберете событие, но сделать это вручную:

this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Main_FormClosing);

А затем добавьте обработчик в ваш код:

private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
  //Code here
}

Если вы не хотите закрывать форму, вы можете установить: e.Cancel = true;

2 голосов
/ 09 июля 2010

используйте событие Application.Exit или Form.Closing.Выход не позволит вам отменить, поэтому закрытие, вероятно, лучший выбор

2 голосов
/ 09 июля 2010

Существует событие FormClosing, к которому вы можете привязаться, которое запускается, когда форма закрывается. Обработчик событий содержит ссылку на причину закрытия формы (действие пользователя, завершение работы ОС и т. Д.) И предлагает возможность отменить ее.

Ознакомьтесь со статьей MSDN здесь: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosing.aspx

0 голосов
/ 09 июля 2010

Просто используйте событие FormClosing формы

0 голосов
/ 09 июля 2010

Если вы используете форму, вы можете перехватить событие Form.FormClosing. Его можно отменить, установив свойство Cancel в аргументах на основе ввода пользователя.

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