我正在使用一个使用System.Windows.Forms.PrintPreviewDialog
来显示“打印预览”对话框的WinForms应用程序。当用户在该对话框中按下ESC时,我想关闭对话框。不幸的是,我无法弄清楚如何做到这一点。我试图安装KeyDown / PreviewKeyDown事件处理程序,但它永远不会被调用。我也尝试将焦点设置到对话框(以及它的PrintPreviewControl),认为这是问题,但这也没有帮助。有谁知道如何使这项工作?
答案 0 :(得分:4)
我最终自定义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);
}
}
}
答案 1 :(得分:0)
我没有试过这个,但是当你按下Esc时,System.Windows.Forms
没有给CancelButton
打电话?尝试创建一个虚拟取消按钮,在表单上调用.Close
。