我正在使用一个WinForms应用程序,该应用程序使用System.Windows.Forms.PrintPreviewDialog
来显示“打印预览”对话框。当用户在该对话框中按ESC时,我想关闭对话框。不幸的是,我无法弄清楚如何做到这一点。我试图安装一个KeyDown/PreviewKeyDown事件处理程序,但它永远不会被调用。我也尝试将焦点设置到对话框(以及它的PrintPreviewControl),认为这是问题,但这也没有帮助。有没有人有任何想法如何使这项工作?按ESC时关闭PrintPreviewDialog
2
A
回答
3
我结束了自定义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);
}
}
}
0
我还没有试过这个,但不要System.Windows.Forms
当你按Esc时,请拨打CancelButton
?尝试创建一个虚拟取消按钮,在表单上调用.Close
。
+0
这是一个有趣的可能性,但我宁愿没有任何额外的控件添加到窗体。我找到了一个解决方案,它涉及覆盖对话框的'ProcessCmdKey'函数(请参阅我自己的答案,在本页的其他地方),这让我很满意。 – 2010-02-05 14:44:01
相关问题
- 1. 关闭按ESC时的灯箱
- 2. 关于按Esc的JavaFx关闭窗口?
- 3. 在ESC按下关闭java框架
- 4. 如何按ESC键关闭boxy窗口?
- 5. 如何关闭rich:popupPanel按Esc键?
- 6. 关闭上ESC键按下XtraUserControl
- 7. 如何通过按Esc键关闭JInternalFrame?
- 8. 如何在用户按下ESC按钮时关闭提示?
- 9. 当iframe集中时按下Esc键时,Thickbox不会关闭
- 10. extjs关闭ESC上的Ext.window.Window
- 11. 关闭jquery tooltip on esc
- 12. 关闭对话框后关闭对话框后按ESC键(仅铬)
- 13. 需要防止弹出关闭按esc键
- 14. 如何通过按Esc关闭应用程序。在C#.NET
- 15. 在ESC按键,关闭自定义对话框与jQuery
- 16. GXT:LayoutContainer不响应ESC键或“X”按钮关闭
- 17. 点击esc按钮不要关闭甜蜜提醒
- 18. 按ESC键关闭Google Chrome的弹出窗口
- 19. bootstrap popover添加esc按键检查并关闭
- 20. esc关闭在简单的模式
- 21. ESC KEP关闭弹出形式
- 22. 禁用Esc关闭的彩盒
- 23. 用密钥关闭弹出Esc
- 24. (UWP)使用ESC键关闭ModalDialog
- 25. Qt - Esc不应关闭对话框
- 26. Modal(LeanModal)通过Esc键关闭
- 27. 使ESCAPE(ESC)键关闭窗口
- 28. 如何在Esc键上关闭DevExpress PrintPreview
- 29. 关闭ESC上的JS菜单
- 30. 当在jQuery中按Esc或外部时,动态禁用关闭引导模式
很好的解决方案,谢谢你发布到你的问题。 – 2010-02-05 18:53:23
谢谢,这真的很有帮助 – 2010-02-14 07:34:55