Закрыть PrintPreviewDialog, когда ESC нажата
-
25-09-2019 - |
Вопрос
Я работаю над приложением WinForms, которое использует System.Windows.Forms.PrintPreviewDialog
Чтобы отобразить диалоговое окно предварительного просмотра печати. Когда пользователь нажимает ESC в этом диалоговом окне, я бы хотел закрыть диалог. К сожалению, я не могу понять, как это сделать. Я пытался установить обработчик событий клавиши / предыдущего проявления, но он никогда не вызывается. Я также попробовал настроить фокус на диалог (и к его printPreviewControl), думая, что это был этот вопрос, но это тоже не помогло. У кого-нибудь есть идеи, как сделать эту работу?
Решение
Я закончил настроить PrintPreviewDialog
и переоценить его ProcessCmdKey
Метод, чтобы закрыть форму, когда пользователь нажимает ESC. Это похоже на самое чистое решение.
Вот код, который я писал:
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);
}
}
}
Другие советы
Я не пробовал это, но не System.Windows.Forms
вызовы CancelButton
Когда вы нажимаете ESC? Попробуйте создать пуговицу отменить кнопку, которая вызывает .Close
по форме.