Chiudi PrintPreviewDialog quando si preme ESC
-
25-09-2019 - |
Domanda
Sto lavorando su un'applicazione WinForms che usi System.Windows.Forms.PrintPreviewDialog
per visualizzare una finestra di anteprima di stampa. Quando l'utente preme ESC in quel dialogo, mi piacerebbe chiudere la finestra. Purtroppo, non riesco a capire come fare questo. Ho provato ad installare un gestore di eventi KeyDown / PreviewKeyDown, ma non è mai viene chiamato. Ho anche provato a installare attenzione alla finestra di dialogo (e alla sua PrintPreviewControl), pensando che era il problema, ma questo non ha aiutato neanche. Qualcuno ha qualche idea di come fare questo lavoro?
Soluzione
Ho finito la personalizzazione PrintPreviewDialog
e ridefinendo il suo metodo ProcessCmdKey
per chiudere la maschera quando l'utente preme ESC. Questo mi sembra la soluzione più pulita.
Ecco il codice che ho scritto:
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);
}
}
}
Altri suggerimenti
Non ho provato questo, ma non System.Windows.Forms
s chiamata CancelButton
Quando si preme ESC? Prova a creare un manichino pulsante che invita .Close
sul modulo Cancel.