Feche a PrintPreviewDialog quando o EST é pressionado
-
25-09-2019 - |
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?
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.Forms
s Chamada CancelButton
Quando você pressiona o ESC? Tente criar um botão cancelamento do boneco que chama .Close
No formulário.