如何跳过printDocument.print()中的打印对话框并直接打印页面?

时间:2012-05-13 14:10:49

标签: c# .net winapp

当我在用C#编写的Windows应用程序中使用MyPrintDocument.print()时,会出现一个带有取消按钮的Windows处理打印例程的对话框。我不希望显示此对话框,是否可能?

如果没有,我应该使用哪种方式?我的程序使用热敏打印机。

2 个答案:

答案 0 :(得分:18)

您使用的是PrintController

  

.NET Framework包含三个源自PrintController的打印控制器,可帮助您完成常见任务。 StandardPrintController将文档打印到打印机。 PreviewPrintController生成预览文档在打印时的外观,并由PrintPreviewControlPrintPreviewDialog类使用。 PrintControllerWithStatusDialog在打印过程中提供打印状态对话框。

听起来您使用的是PrintControllerWithStatusDialog PrintController


警告:我无法确认基本PrintController的行为方式不同。

根据此MSDN Forum PostingPrintControllerWithStatusDialog是默认值:

他建议这样的事情:

MyPrintDocument.PrintController = new System.Drawing.Printing.StandardPrintController();

答案 1 :(得分:4)

如果您没有分配PrintDocument.PrintController属性,那么您将获得默认的打印控制器。 PrintControllerWithStatusDialog的一个实例,它显示进度对话框,计算页面并通常告知用户程序由于某种原因没有响应但是没有挂起。

只需在表单构造函数中重新分配它。 Boilerplate代码是:

Public Class Form1
    Public Sub New()
        InitializeComponent()
        PrintDocument1.PrintController = New System.Drawing.Printing.StandardPrintController
    End Sub
End Class

您必须做一些其他事情来告诉用户打印正在进行中。至少显示hourglass cursor