【发布时间】:2012-05-13 14:10:49
【问题描述】:
当我在用 C# 编写的 Windows 应用程序中使用 MyPrintDocument.print() 时,会显示一个对话框,用于处理带有取消按钮的 Windows 处理打印例程。我不想显示这个对话框,可以吗?
如果不是,我应该使用哪种方式?我的程序使用热敏打印机。
【问题讨论】:
当我在用 C# 编写的 Windows 应用程序中使用 MyPrintDocument.print() 时,会显示一个对话框,用于处理带有取消按钮的 Windows 处理打印例程。我不想显示这个对话框,可以吗?
如果不是,我应该使用哪种方式?我的程序使用热敏打印机。
【问题讨论】:
你使用的是哪个PrintController。
.NET Framework 包括三个派生自
PrintController的打印控制器,可帮助完成常见任务。StandardPrintController将文档打印到打印机。PreviewPrintController生成打印时文档外观的预览,并由PrintPreviewControl和PrintPreviewDialog类使用。PrintControllerWithStatusDialog在打印过程中提供打印状态对话框。
听起来你正在使用PrintControllerWithStatusDialog PrintController。
警告:我无法验证基本 PrintController 的行为方式是否不同。
根据这个MSDN Forum Posting PrintControllerWithStatusDialog 是默认值:
他建议是这样的:
MyPrintDocument.PrintController = new System.Drawing.Printing.StandardPrintController();
【讨论】:
如果您不分配PrintDocument.PrintController 属性,那么您将获得一个默认打印控制器。 PrintControllerWithStatusDialog 的一个实例,它显示进度对话框、计算页数并通常通知用户程序由于某种原因无响应但未挂起。
只需在表单构造函数中重新分配它。样板代码是:
Public Class Form1
Public Sub New()
InitializeComponent()
PrintDocument1.PrintController = New System.Drawing.Printing.StandardPrintController
End Sub
End Class
而且您必须执行其他操作来告诉用户打印正在进行中。至少显示一个hourglass cursor。
【讨论】: