显示用户打印预览并在打印时执行代码



我有一个位图,希望用户在打印之前看到它。所以我为他打开打印预览,如果用户决定打印,我想执行一些代码。

问题是,printPreviewDialog不会返回答案。这可能是因为它只有一个打印按钮和关闭按钮,但没有打印和关闭,所以我可以知道用户决定打印。

如果你有解决方案,我会很高兴,如果你认为这不是最好的方法,请告诉我。

代码:

        PrintDocument pd = new PrintDocument();
        pd.PrintPage += new PrintPageEventHandler(Print_Page);
        PrintPreviewDialog pritdlg = new PrintPreviewDialog();
        pritdlg.Document = pd;
        if (pritdlg.ShowDialog() == DialogResult.OK)
            pd.Print();
        else
            MessageBox.Show("you have canceled print");

        private void Print_Page(object o, PrintPageEventArgs e)
        {
        e.Graphics.DrawImage(target, 0,0);
        }

订阅要发送到printPreviewDialog控件的文档的EndPrint事件,然后在其PrintEventArgs参数中检查PrintAction

示例:

private void buttonPrintPreview_Click(object sender, EventArgs e)
    {
        PrintPreviewDialog printDialog = new PrintPreviewDialog();
        printDialog.Document = yourDocument;
        yourDocument.EndPrint += doc_EndPrint; // Subscribe to EndPrint event of your document here.
        printDialog.ShowDialog();
    }
    void doc_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
    {
        if (e.PrintAction == System.Drawing.Printing.PrintAction.PrintToPrinter)
        {
            // Printing to the printer!
        }
        else if (e.PrintAction == System.Drawing.Printing.PrintAction.PrintToPreview)
        {
            // Printing to the preview dialog!
        }
    }

相关内容

  • 没有找到相关文章

最新更新