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

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

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

你在使用哪个PrintController 。

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

听起来你正在使用PrintControllerWithStatusDialog PrintController


警告:我无法validation基本PrintController行为是否相同。

根据此MSDN论坛发布 PrintControllerWithStatusDialog是默认值:

他建议这样的事情:

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

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

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

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

而且您必须做一些其他事情来告诉用户打印正在进行中。 至少显示一个沙漏光标 。