Закрыть PrintPreviewDialog при нажатии ESC - PullRequest
2 голосов
/ 03 февраля 2010

Я работаю над приложением WinForms, которое использует System.Windows.Forms.PrintPreviewDialog для отображения диалогового окна предварительного просмотра. Когда пользователь нажимает ESC в этом диалоговом окне, я бы хотел закрыть диалоговое окно. К сожалению, я не могу понять, как это сделать. Я пытался установить обработчик событий KeyDown / PreviewKeyDown, но он никогда не вызывается. Я также попытался установить фокус на диалог (и на его PrintPreviewControl), думая, что это проблема, но это тоже не помогло. У кого-нибудь есть идеи, как заставить это работать?

Ответы [ 2 ]

4 голосов
/ 05 февраля 2010

В итоге я настроил 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);
    }
  }
}
0 голосов
/ 03 февраля 2010

Я не пробовал это, но System.Windows.Forms s не звоните CancelButton, когда вы нажимаете Esc? Попробуйте создать фиктивную кнопку Отмена, которая вызывает .Close в форме.

...