Search code examples
eventsdevexpressxtrareport

How to close DevExpress PrintPreview on Esc key


We are migrating our reports to DevExpress. The preview tool used the Esc key as default to close the print preview but using DevExpress XtraReport uses Alt + F4.

We want to keep the user experience so I need to somewhat handle a key event in that viewer form and if it's a Esc key invoke it's close event.


Solution

  • The preview tool in DevExpress is called ReportPrintTool. You can use ReportPrintTool.PreviewForm property or ReportPrintTool.PreviewRibbonForm property to get the preview form according to which type of menu (panel or ribbon) do you want. Both of them are Form class descendants. Now, you can just simply use Form.KeyPreview property and Form.KeyDown event to achieve the result.
    Here is example:

    var report = new XtraReport();
    
    var tool = new ReportPrintTool(report);
    
    var form = tool.PreviewRibbonForm;
    form.KeyPreview = true;
    form.KeyDown += (sender, e) => { if (e.KeyCode == Keys.Escape) form.Close(); };
    
    report.ShowRibbonPreview();