Winforms 按ESC键时关闭PrintPreviewDialog
我正在开发一个WinForms应用程序,它使用Winforms 按ESC键时关闭PrintPreviewDialog,winforms,print-preview,Winforms,Print Preview,我正在开发一个WinForms应用程序,它使用System.Windows.Forms.PrintPreviewDialog显示打印预览对话框。当用户在该对话框中按ESC键时,我想关闭该对话框。不幸的是,我不知道怎么做。我尝试安装KeyDown/PreviewKeyDown事件处理程序,但从未调用它。我还尝试将焦点设置到对话框(以及它的PrintPreviewControl),认为这就是问题所在,但这也没有帮助。有人知道如何实现这一点吗?我没有尝试过,但在按下Esc键时不要调用System.Wi
System.Windows.Forms.PrintPreviewDialog
显示打印预览对话框。当用户在该对话框中按ESC键时,我想关闭该对话框。不幸的是,我不知道怎么做。我尝试安装KeyDown/PreviewKeyDown事件处理程序,但从未调用它。我还尝试将焦点设置到对话框(以及它的PrintPreviewControl),认为这就是问题所在,但这也没有帮助。有人知道如何实现这一点吗?我没有尝试过,但在按下Esc键时不要调用System.Windows.Forms
s callcancel按钮?尝试在表单上创建一个调用.Close
的虚拟取消按钮。我最终自定义并覆盖了它的方法,以便在用户按下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);
}
}
}
这是一个有趣的可能性,但我不想在表单中添加任何附加控件。我找到了一个解决方案,其中包括覆盖对话框的ProcessCmdKey
函数(请参阅我自己的答案,本页其他地方),我对此感到满意。