用户取消打印预览对话框时如何关闭打印对话框 [英] how to close print dialog when user cancel print preview dialog

查看:506
本文介绍了用户取消打印预览对话框时如何关闭打印对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要一些帮助。我的要求是当用户点击打印按钮时,它应显示打印预览对话框。如果用户取消或关闭预览对话框,表单必须返回原始状态。



我面临的问题是打印预览对话框是否可见。但我不知道如何捕捉打印预览工具点击事件



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();
 }

推荐答案

您好,

试试这个

Hello ,
Try this
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


你正在从pd(PrintDialog)捕获对话框结果而不是ppd 。



你应该有这样的额外DialogResult:



You're catching dialog result from pd (PrintDialog) not ppd.

You should have additional DialogResult like this:

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.


你好,



根据我的理解,要求是在用户关闭或取消预览对话框时取消打印表格。



所以这里假设将从预览对话框表格中选择打印选项,

我的建议是删除pdoc.Print ()电话。



如果(结果== DialogResult.OK)

{



PrintPreviewDialog ppd = new PrintPreviewDialog();

ppd.Document = pdoc;

ppd.ShowDialog();



// pdoc.Print(); / *删除此调用,因为用户将从预览表单打印或取消* /

}



我创建为演示代码并且它可以正常工作。



注意:我添加了一个空白的pdoc_PrintPage()处理程序,如下所示。



Hello,

As per my understanding the requirement is to cancel print when user closes or cancel the preview dialog form.

So here assuming the print option will be chosen from the preview dialog form ,
My suggestion is to remove the pdoc.Print() call .

if (result == DialogResult.OK)
{

PrintPreviewDialog ppd = new PrintPreviewDialog();
ppd.Document = pdoc;
ppd.ShowDialog();

// pdoc.Print(); /* remove this call as user will print from preview form or cancel out*/
}

I created as demo code and it works .

Note : I added a blank pdoc_PrintPage() handler as below.

private void pdoc_PrintPage(object sender, PrintPageEventArgs e)
       {

          // throw new NotImplementedException();

       }









谢谢





Thanks


这篇关于用户取消打印预览对话框时如何关闭打印对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆