web-dev-qa-db-fra.com

Comment fermer une fenêtre dans WPF sur une touche d'échappement

Duplicata possible:
Comment puis-je attribuer le comportement "Fermer en appuyant sur la touche Échap" à toutes les fenêtres WPF d'un projet?

Je souhaite fermer les fenêtres de mon projet wpf lorsque l'utilisateur clique sur le bouton d'échappement. Je ne veux pas écrire le code dans chaque fenêtre, mais je veux créer une classe qui peut intercepter lorsque l'utilisateur appuie sur la touche d'échappement.

38
Kishore Kumar

Option 1

Utilisez la propriété Button.IsCancel .

<Button Name="btnCancel" IsCancel="true" Click="OnClickCancel">Cancel</Button>

Lorsque vous définissez la propriété IsCancel d'un bouton sur true, vous créez un bouton qui est enregistré auprès d'AccessKeyManager. Le bouton est ensuite activé lorsqu'un utilisateur appuie sur la touche ESC.

Cependant, cela ne fonctionne correctement que pour les boîtes de dialogue.

Option 2

Vous ajoutez un gestionnaire à PreviewKeyDown sur la fenêtre si vous souhaitez fermer les fenêtres sur la touche Echap.

public MainWindow()
{
    InitializeComponent();

    this.PreviewKeyDown += new KeyEventHandler(HandleEsc);
}

private void HandleEsc(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Escape)
        Close();
}
120
CharithJ