Как мне добавить код к кнопке выхода в форме c #?

StackOverflow https://stackoverflow.com/questions/904345

  •  05-09-2019
  •  | 
  •  

Вопрос

Я использую Microsoft Visual C # 2008 Express.

В моей основной форме есть кнопка X для закрытия формы в правом верхнем углу.Как мне добавить код к этой кнопке?В моем меню у меня есть пункт "Выход", и в нем есть код, который очищает и закрывает мои базы данных.Как мне добавить тот же код к этой кнопке, если пользователь выберет это в качестве способа выхода?

Спасибо!

-Адина

Это было полезно?

Решение

Использование события FormClosing должно перехватывать любой способ закрытия формы.

Другие советы

В режиме конструктора вашей формы в окне свойств выберите кнопку События и прокрутите вниз до событий "FormClosed" и "FormClosing".

FormClosed вызывается после закрытия формы.

FormClosing вызывается перед закрытием формы, а также позволяет отменить закрытие, сохраняя форму открытой:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
}

Если вы хотите спросить пользователя "Вы уверены, что хотите закрыть эту форму?", то используйте FormClosing, где вы можете установить Cancel = True и форма оставалась бы открытой.

Если вы хотите закрыть какой-либо ресурс только тогда, когда форма определенно закрыта, то вы используете FormClosed событие.

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

FormClosing /FormClosed позволяет вам отслеживать событие для этой формы, которое может совпадать с выходом из приложения.Однако есть другое событие, которое вы можете подключить, называемое Application.ApplicationExit.

В вашем Основном методе:

Application.ApplicationExit += Application_ApplicationExit;

...

private static void Application_ApplicationExit(object sender, EventArgs e) {

  // do stuff when the application is truly exiting, regardless of the reason

}

Используйте Закрытое событие вашей winform.

Этот код зафиксирует, как пользователь нажимает на 'X' или использует Alt-F4 в форме, чтобы позволить вам что-то сделать.Мне пришлось использовать это, потому что мне нужно было действие для вызова моего закрывающего события, а оно не вызывало его при использовании закрывающего события FormClosing из-за гоночных событий.

/// <summary>
/// This code captures the 'Alt-F4' and the click to the 'X' on the ControlBox
/// and forces it to call MyClose() instead of Application.Exit() as it would have.
/// This fixes issues where the threads will stay alive after the application exits.
/// </summary>
public const int SC_CLOSE = 0xF060;
public const int WM_SYSCOMMAND = 0x0112;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
    if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
        MyClose();

    base.WndProc(ref m);
}

дважды щелкните кнопку выхода в form'design, затем просто вызовите метод Dispose()

Метод действия формы //

 protected override void OnFormClosing(FormClosingEventArgs e)

          {
          base.OnFormClosing(e);

          if (e.CloseReason == CloseReason.WindowsShutDown) return;

               switch (MessageBox.Show(this, "Are you sure you want to exit?", "Exit", MessageBoxButtons.YesNo))
                     {
                       case DialogResult.No:
                           e.Cancel = true;
                           break;
                     default:
                          break;
                     }
         }
 You can use form closing events choose or set closing event in  properties window      
 You can add dialog conditions based on what task you want to perform before closing form

private void Form1_FormClosing(object sender,FormClosingEventArgs e)
{
Application.Exit();
//you can also use Application.ExitThread();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top