我正在开发一个 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/