PrintPreviewDialog ppvw = new PrintPreviewDialog();
  ppvw.Document = printDoc;
  ppvw.Width = 600;
   ppvw.Height = 500;
if (ppvw.ShowDialog() != DialogResult.OK)
     { 
            printDoc.BeginPrint -= new PrintEventHandler(prt.PrintDoc_BeginPrint);
            printDoc.PrintPage -= new PrintPageEventHandler(prt.PrintDoc_PrintPage);
    }
      else 
     {                                
              printDoc.DocumentName = PrintTitle;
              ppvw.Close();//为什么没有用这个????
              printDoc.Print();                                
              printDoc.BeginPrint -= new PrintEventHandler(prt.PrintDoc_BeginPrint);
           printDoc.PrintPage -= new PrintPageEventHandler(prt.PrintDoc_PrintPage);
                       
     }我想让用户单击打印预览中的打印后,能够自动关闭打印预览窗口

解决方案 »

  1.   

    如果你在窗体 PrintPreviewDialog  中已经设置
    this.DialogResult = DialogResult.OK;的话ppvw.Close();这个好像没用
      

  2.   

    PrintPreviewDialog ppvw = new PrintPreviewDialog();
      ppvw.Document = printDoc;
      ppvw.Width = 600;
      ppvw.Height = 500;
    if (ppvw.ShowDialog() == DialogResult.OK)
      {  
      printDoc.DocumentName = PrintTitle;
      printDoc.Print();   
      }  printDoc.BeginPrint -= new PrintEventHandler(prt.PrintDoc_BeginPrint);
      printDoc.PrintPage -= new PrintPageEventHandler(prt.PrintDoc_PrintPage);
        
      

  3.   

    你没有弄明白模态对话框和非模态对话框的区别。参考:
    里面有关于关闭模态对话框的段子http://blog.csdn.net/mngzilin/archive/2010/01/01/5118256.aspx
      

  4.   

    直接下面这样就行:
    PrintPreviewDialog ppvw = new PrintPreviewDialog();
    ppvw.Document = printDoc;
    ppvw.Width = 600;
    ppvw.Height = 500;
    printDoc.BeginPrint -= new PrintEventHandler(prt.PrintDoc_BeginPrint);//放在这里
    printDoc.PrintPage -= new PrintPageEventHandler(prt.PrintDoc_PrintPage);
    ppvw.Show(this);
      

  5.   

    至于你所说的
    ppvw.Close();//为什么没有用这个????在模态对话框设置了DialogResult的值后,他就已经关闭了,如果你想要在自己操作关闭事件,要用非模态对话框,即ppvw.Show(this);然后添加委托事件ppvw.FormClosed+=new FormClosedEventHandler(ppvw_FormClosed);
    在ppvw_FormClosed里面操作你的关闭PrintPreviewDialog后要进行的操作
      

  6.   

    基础太差,不能理解你说的,
    能不能给个详细的代码,
    ppvw.Show(this);//这个有错
    错误 1 关键字“this”在静态属性、静态方法或静态字段初始值设定项中无效 D:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\test2\test2\Form1.cs 113 39 test2
    错误 2 与“System.Windows.Forms.Form.Show(System.Windows.Forms.IWin32Window)”最匹配的重载方法具有一些无效参数 D:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\test2\test2\Form1.cs 113 29 test2
    错误 3 参数“1”: 无法从“test2.PrintDGV”转换为“System.Windows.Forms.IWin32Window” D:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\test2\test2\Form1.cs 113 39 test2