Vous pouvez définir une propriété sur le formulaire qui le fera pour vous si vous avez un bouton sur le formulaire qui ferme déjà le formulaire.
Définissez le CancelButton
du formulaire à ce bouton.
Obtient ou définit le contrôle du bouton sur lequel on clique lorsque l'utilisateur appuie sur la touche Esc clé.
Si vous ne disposez pas d'un bouton d'annulation, vous devrez ajouter un bouton de type KeyDown
et vérifiez la présence de la touche Esc dans ce gestionnaire :
private void Form_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
this.Close();
}
}
Vous devrez également définir le KeyPreview
à true.
Obtient ou définit une valeur indiquant si le formulaire doit recevoir les événements de touche avant que l'événement ne soit transmis au contrôle qui a le focus.
Cependant, comme le souligne Gargo dans son réponse cela signifie qu'en appuyant sur Esc pour interrompre une modification sur un contrôle dans la boîte de dialogue aura également pour effet de fermer la boîte de dialogue. Pour éviter cela, remplacez l'option ProcessDialogKey
comme suit :
protected override bool ProcessDialogKey(Keys keyData)
{
if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape)
{
this.Close();
return true;
}
return base.ProcessDialogKey(keyData);
}
1 votes
Pour une solution alternative, voir la réponse de Hans Passant sur ce fil : stackoverflow.com/questions/2290959/
0 votes
Cela répond-il à votre question ? Bouton d'échappement pour fermer un formulaire Windows Forms en C#