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?

È stato utile?

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.Formss chiamata CancelButton Quando si preme ESC? Prova a creare un manichino pulsante che invita .Close sul modulo Cancel.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top