我正在开发一个System.Windows.Forms.PrintPreviewDialog
用于显示打印预览对话框的 WinForms 应用程序。当用户在该对话框中按 ESC 时,我想关闭该对话框。不幸的是,我无法弄清楚如何做到这一点。我尝试安装 KeyDown/PreviewKeyDown 事件处理程序,但它从未被调用。我还尝试将焦点设置为对话框(及其 PrintPreviewControl),认为这是问题所在,但这也无济于事。有谁知道如何使这项工作?
问问题
1356 次
2 回答
5
当用户按下 ESC 时,我最终自定义PrintPreviewDialog
并覆盖了其ProcessCmdKey
关闭表单的方法。这似乎是最干净的解决方案。
这是我写的代码:
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);
}
}
}
于 2010-02-05T14:41:48.557 回答
0
我没试过这个,但是当你按 Esc 时不要System.Windows.Forms
打电话?CancelButton
尝试创建一个调用.Close
表单的虚拟取消按钮。
于 2010-02-03T18:40:50.777 回答