Pergunta

Estou trabalhando em um aplicativo WinForms que usa System.Windows.Forms.PrintPreviewDialog Para exibir uma caixa de diálogo de visualização de impressão. Quando o usuário pressiona o ESC nessa caixa de diálogo, gostaria de fechar a caixa de diálogo. Infelizmente, não consigo descobrir como fazer isso. Eu tentei instalar um manipulador de eventos KeyDown/VisuewKeyDown, mas nunca é chamado. Também tentei definir o foco para a caixa de diálogo (e para o seu PrintPreviewControl), pensando que esse era o problema, mas isso também não ajudou. Alguém tem alguma ideia de como fazer isso funcionar?

Foi útil?

Solução

Acabei personalizando PrintPreviewDialog e substituindo seu ProcessCmdKey Método para fechar o formulário quando o usuário pressiona ESC. Parece a solução mais limpa.

Aqui está o código que escrevi:

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);
    }
  }
}

Outras dicas

Eu não tentei isso, mas não System.Windows.Formss Chamada CancelButton Quando você pressiona o ESC? Tente criar um botão cancelamento do boneco que chama .Close No formulário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top