Вопрос

Я работаю над приложением 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 по форме.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top