Je travaille sur une application WinForms qui utilise System.Windows.Forms.PrintPreviewDialog
pour afficher une boîte de dialogue Aperçu avant impression. Lorsque l'utilisateur appuie sur ESC dans cette boîte de dialogue, je voudrais fermer la boîte de dialogue. Malheureusement, je ne peux pas comprendre comment faire cela. J'ai essayé d'installer un gestionnaire d'événements KeyDown/PreviewKeyDown, mais il n'est jamais appelé. J'ai également essayé de mettre l'accent sur le dialogue (et sur son PrintPreviewControl), en pensant que c'était le problème, mais cela n'a pas aidé non plus. Est-ce que quelqu'un a une idée de comment faire ce travail?Close PrintPreviewDialog lorsque ESC est pressé
Répondre
J'ai fini par personnaliser PrintPreviewDialog
et en remplaçant sa méthode ProcessCmdKey
pour fermer le formulaire lorsque l'utilisateur appuie sur ESC. Cela semble être la solution la plus propre.
Voici le code que j'ai écrit:
using System.Windows.Forms;
namespace MyProject.UI.Dialogs
{
class CustomPrintPreviewDialog : PrintPreviewDialog
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
// Close the dialog when the user presses ESC
if (keyData == Keys.Escape)
{
this.Close();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
}
Je n'ai pas essayé cela, mais ne pas System.Windows.Forms
s appeler CancelButton
lorsque vous appuyez sur Echap? Essayez de créer un bouton d'annulation factice qui appelle .Close
sur le formulaire.
C'est une possibilité intéressante, mais je l'aurais plutôt pas d'ajouter des contrôles supplémentaires à la forme. J'ai trouvé une solution qui implique de surcharger la fonction 'ProcessCmdKey' de la boîte de dialogue (voir ma propre réponse, ailleurs sur cette page), ce dont je suis satisfait. –
Bonne solution, merci de l'avoir posté sur votre question. –
Merci, c'était vraiment utile –