none
Window_Closing RRS feed

  • Pergunta

  • Olá,

     

            private void btnSair_Click(object sender, RoutedEventArgs e)

            {

                if (!(MessageBox.Show("Deseja sair da aplicação?",

                    "Confirmação", MessageBoxButton.YesNo) == MessageBoxResult.Yes))

                {

                    e.Handled = true;

                }

                else

                {

                    Application.Current.Shutdown();

                }

            }

    ------------------------------------------------------
            private void Window_Closing(object sender, CancelEventArgs e)
            {
                if (!(MessageBox.Show("Deseja sair da aplicação?",
                          "Confirmação", MessageBoxButton.YesNo) == MessageBoxResult.Yes))
                {
                    e.Cancel = true;
                }
                else
                {
                    Application.Current.Shutdown();
                }
                
            }
    Eu tenho esses dois eventos em uma janela, o meu problema é que quando disparo o btnSair o Window_Closing também é disparado. Não consegui entender o porque.
    Alguem poderia me ajudar?
    Obrigado,

     

    sexta-feira, 9 de dezembro de 2011 18:20

Respostas

  • Quando você executa o Application.Current.Shutdown() internamente o Window_Closing() será chamado e executado. O que você pode fazer é criar uma variável que irá controlar se você clicou pelo botão ou não. Se clicou, não executa o "if MessageBox..." do Window_Closing.
    Leonardo Borges 'Xis'
    "Mas a persistência é o que leva a perfeição."
    Se a resposta for útil, marque-a. Poderá ser útil para outros desenvolvedores.
    • Marcado como Resposta Diogo_Costa sexta-feira, 9 de dezembro de 2011 19:56
    sexta-feira, 9 de dezembro de 2011 19:01

Todas as Respostas

  • Quando você executa o Application.Current.Shutdown() internamente o Window_Closing() será chamado e executado. O que você pode fazer é criar uma variável que irá controlar se você clicou pelo botão ou não. Se clicou, não executa o "if MessageBox..." do Window_Closing.
    Leonardo Borges 'Xis'
    "Mas a persistência é o que leva a perfeição."
    Se a resposta for útil, marque-a. Poderá ser útil para outros desenvolvedores.
    • Marcado como Resposta Diogo_Costa sexta-feira, 9 de dezembro de 2011 19:56
    sexta-feira, 9 de dezembro de 2011 19:01
  • Leonardo,

    Fiz o que você disse e agora está tudo OK. 

    Muito obrigado pela força. 

     

    Abraços


    • Editado Diogo_Costa sexta-feira, 9 de dezembro de 2011 19:56
    sexta-feira, 9 de dezembro de 2011 19:55