代码之家  ›  专栏  ›  技术社区  ›  Emerick Rogul

按Esc时关闭打印预览对话框

  •  2
  • Emerick Rogul  · 技术社区  · 15 年前

    我正在开发一个使用 System.Windows.Forms.PrintPreviewDialog 显示打印预览对话框。当用户在该对话框中按Esc键时,我想关闭该对话框。不幸的是,我不知道怎么做。我尝试安装keydown/previewkeydown事件处理程序,但从未调用它。我还尝试将焦点设置到对话框(以及它的printpreviewcontrol),认为这是问题所在,但也没有帮助。有人知道怎么做吗?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Emerick Rogul    15 年前

    我最终定制了 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);
        }
      }
    }
    
        2
  •  0
  •   Dour High Arch    15 年前

    我没试过,但不要 System.Windows.Forms S呼叫 CancelButton 按Esc键时?尝试创建一个调用 .Close 形式上。