winforms - 按下 ESC 时关闭 PrintPreviewDialog

标签 winforms print-preview

我正在开发一个 WinForms 应用程序,它使用 System.Windows.Forms.PrintPreviewDialog 来显示打印预览对话框。当用户在该对话框中按 ESC 键时,我想关闭该对话框。不幸的是,我不知道该怎么做。我尝试安装 KeyDown/PreviewKeyDown 事件处理程序,但它从未被调用过。我还尝试将焦点设置到对话框(及其 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);
    }
  }
}

关于winforms - 按下 ESC 时关闭 PrintPreviewDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2193910/

相关文章:

javascript - 错误 - 权限被拒绝 - jQuery 打印预览?

c# - 从 C# 中查找允许用户更改打印机的 Excel 打印预览对话框

javascript - 打开打印预览时,Chrome 浏览器无法调用服务器

c# - 使用 MessageBox OK 按钮退出事件处理程序

C# 简单列表显示的问题

c# - System.Drawing.dll/NumericUpDown 的 .NET 访问冲突异常

c# - 为动态创建的面板添加鼠标点击事件

css - 打印预览压缩内容

c# - .Net WebBrowser 中的 HTML 和 WinForms 应用程序之间的双向通信在 Windows Server 上不起作用

c# - 从 WebBrowser 控件打印时删除页眉和页脚