Pergunta

Estou usando o Microsoft Visual C # 2008 Express.

No meu formulário principal, há o botão X para fechar o formulário no canto superior direito. Como faço para adicionar o código para este botão? No meu menu, eu tenho um item "Exit" e tem código que limpa e fecha meus bancos de dados. Como faço para adicionar o mesmo código para este botão se as escolhe de usuários que, como forma de saída?

Obrigado!

-Adeena

Foi útil?

Solução

Usando o Evento FormClosing deve pegar qualquer forma de fechar o formulário.

Outras dicas

Na vista de estrutura para o formulário, dentro da janela Propriedades, selecione o botão de Eventos e desça até os e eventos "FormClosed" "FormClosing".

FormClosed é chamado após o formulário é fechado.

FormClosing é chamado antes do formulário é fechado e também permite que você cancelar o fechamento, mantendo a forma aberta:

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

Se você quiser perguntar ao usuário "Tem certeza de que quer fazer perto este formulário?", Então use FormClosing, onde você pode definir Cancel = True ea forma permaneceria aberta.

Se você quiser fechar algum recurso somente quando o formulário é definitivamente fechado, então você usar o evento FormClosed.

Se você está no controle de todo o código, então ele meio que não importa. Mas o que você não quer que aconteça é clean-up os recursos utilizando FormClosing quando o outro manipulador do evento irá manter a forma aberta.

FormClosing / FormClosed permite que você assista o evento para esse formulário que pode coincidir com a aplicação de sair. No entanto, há um outro evento você pode conectar-se chamado Application.ApplicationExit.

No seu método principal:

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

}

Use o Closed-Evento de sua winform.

Este código irá capturar o usuário clicar no 'X' ou usando Alt-F4 em um formulário para que você possa fazer alguma coisa. Eu tive que usar isso, porque o que eu precisava a ação para chamar de meu evento de encerramento, e não iria chamá-lo quando se utiliza o evento FormClosing devido a eventos de corrida.

/// <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);
}

duplo clique no botão de saída em form'design seguida basta ligar para o método Dispose ()

método de ação Form //

 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();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top