我有一个位图,希望用户在打印之前看到它。所以我为他打开打印预览,如果用户决定打印,我想执行一些代码。
问题是,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!
}
}