Demander à l'utilisateur avant de fermer l'application C# WPF

je veux demander à l'utilisateur avant de fermer l'application. Je suis C#.NET 4.0 application. Je suis en utilisant WPF. Je peux le faire sous windows, mais pas dans WPF. L'événement est déclenché lorsque l'utilisateur veut fermer l'application, la boîte de message apparaît, bun peu importe quel bouton est appuyé(oui ou non) l'application se ferme toujours. Pourquoi? Où est l'erreur?

cela fonctionne, mais seulement lorsque l'utilisateur appuie sur "X". Lorsque l'utilisateur appuie sur le bouton avec L'Application.Actuel.Shutdown(); il n'est pas de travail.

private void MainWindowDialog_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    MessageBoxResult result = MessageBox.Show("Do you really want to do that?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Question);
    if (result == MessageBoxResult.No)
    {
        e.Cancel = true;
    }
}
21
demandé sur Harry Johnston 2010-10-14 20:57:36

4 réponses

l'événement de clôture ne peut pas être annulé si vous appelez Application.Current.Shutdown(). Il suffit d'appeler le Window.Close() méthode à la place, ce qui vous donnera une chance d'opposer votre veto à l'opération de fermeture. Une fois toutes les fenêtres de votre programme fermées, l'application s'arrêtera automatiquement.

pour plus d'information, consultez le Gestion Des Applications page sur MSDN.

30
répondu Alex McBride 2012-09-19 09:59:13

appelez Simplement YourMainWindow.Fermez () et utilisez l'événement de fermeture décrit ci-dessus.

8
répondu Gus Cavalcanti 2010-10-14 18:24:54
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (MessageBox.Show("Are you sure to exit?", "Exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        e.Cancel = false;
    else
        e.Cancel = true;
}
5
répondu halfevil 2014-03-22 10:54:18

Pourquoi ne pas simplement demander à l'utilisateur s'il veut fermer l'application, puis appeler Application.Current.Shutdown() comme ceci

    private void closeButton_Click(object sender, RoutedEventArgs e)
    {
        if (MessageBox.Show("Do you want to exit?", "Confirm", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
        {
            Application.Current.Shutdown();
        }
    }
1
répondu Bibaswann Bandyopadhyay 2014-11-21 09:32:12