问题描述
我需要一些帮助。我的要求是当用户点击打印按钮时,它应显示打印预览对话框。如果用户取消或关闭预览对话框,表单必须返回原始状态。
我面临的问题是打印预览对话框是否可见。但我不知道如何捕捉打印预览工具点击事件
I need some help. My requirement is when the user click on print button it should show a print preview dialog. if user cancel or close the preview dialog the form must be return to original.
the problem i am facing is print preview dialog box is visible. but i don't know how to capture the print preview tools click events
public void print()
{
PrintDialog pd = new PrintDialog();
PrintDocument pdoc = new PrintDocument();
PrinterSettings ps = new PrinterSettings();
PaperSize psize = new PaperSize();
pdoc.DefaultPageSettings.Landscape = false;
pd.Document = pdoc;
pd.Document.DefaultPageSettings.PaperSize = psize;
pdoc.PrintPage += new PrintPageEventHandler(pdoc_PrintPage);
DialogResult result = pd.ShowDialog();
if (result == DialogResult.OK)
{
PrintPreviewDialog ppd = new PrintPreviewDialog();
ppd.Document = pdoc;
ppd.ShowDialog();
pdoc.Print();
}
}
如果我将printPreviewDialog代码放在pd.ShowDialog()之前,在预览模式下什么都不可见。这不起作用
if i place the PrintPreviewDialog code before pd.ShowDialog() nothing visible in the preview mode. this not working
PrintPreviewDialog ppd = new PrintPreviewDialog();
ppd.Document = pdoc;
ppd.ShowDialog();
DialogResult result = pd.ShowDialog();
if (result == DialogResult.OK)
{
pdoc.Print();
}
推荐答案
private void printButton_Click(object sender, EventArgs e)
{
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
PrintDialog printdlg = new PrintDialog();
PrintPreviewDialog printPrvDlg = new PrintPreviewDialog();
printPrvDlg.Document = pd;
printPrvDlg.ShowDialog();
printdlg.Document = pd;
if (printdlg.ShowDialog() == DialogResult.OK)
{
pd.Print();
}
}
谢谢
thanks
public void print()
{
PrintDialog pd = new PrintDialog();
PrintDocument pdoc = new PrintDocument();
PrinterSettings ps = new PrinterSettings();
PaperSize psize = new PaperSize();
pdoc.DefaultPageSettings.Landscape = false;
pd.Document = pdoc;
pd.Document.DefaultPageSettings.PaperSize = psize;
pdoc.PrintPage += new PrintPageEventHandler(pdoc_PrintPage);
DialogResult result = pd.ShowDialog();
if (result == DialogResult.OK)
{
PrintPreviewDialog ppd = new PrintPreviewDialog();
ppd.Document = pdoc;
/*This dialog result is the important one :)*/
DialogResult ppdResult = ppd.ShowDialog();
if (ppdResult == DialogResult.OK )
pdoc.Print();
else
pd.Close();
}
}
如果这有帮助,请花些时间接受解决方案。谢谢。
If this helps, please take time to accept the solution. Thank you.
private void pdoc_PrintPage(object sender, PrintPageEventArgs e)
{
// throw new NotImplementedException();
}
谢谢
Thanks
这篇关于用户取消打印预览对话框时如何关闭打印对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!