1

我目前正在打开PrintDialog用户可以选择打印机设置并进行打印的地方。

目前我正在使用下面的代码

var files = Directory.GetFiles(sourceFolder);
foreach (var file in files)
{
     var pdoc = new PrintDocument();

     var pdi = new PrintDialog
               {
                  Document = pdoc
               };
     if (pdi.ShowDialog() == DialogResult.OK)
      {
         pdoc.DocumentName = file;
         pdoc.Print();
      }
 }

有没有办法通过PrintDialog一次将所有文件发送到打印机。那么用户可以选择文件夹并为文件夹内的所有文档设置一个打印设置然后进行打印吗?

4

1 回答 1

1

试试这个示例代码:

var files = Directory.GetFiles(sourceFolder);
if (files.Length != 0)
{
    using (var pdoc = new PrintDocument())
    using (var pdi = new PrintDialog { Document = pdoc, UseEXDialog = true })
    {
        if (pdi.ShowDialog() == DialogResult.OK)
        {
            pdoc.PrinterSettings = pdi.PrinterSettings;
            // ************************************
            // Pay attention to the following line:
            pdoc.PrintPage += pd_PrintPage;
            // ************************************
            foreach (var file in files)
            {
                pdoc.DocumentName = file;
                pdoc.Print();
            }
        }
    }
}

// The PrintPage event is raised for each page to be printed.
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
    string file = ((PrintDocument)sender).DocumentName; // Current file name 
    // Do printing of the Document
    ...
}
于 2014-02-26T12:34:20.710 回答