2012-05-13 3 views
10

Когда я использую MyPrintDocument.print() в приложении Windows, написанном на C#, отображается диалоговое окно для обработки печати Windows с кнопкой отмены. Я не хочу, чтобы этот диалог показывался, возможно ли это?Как пропустить диалог печати в printDocument.print() и распечатать страницу напрямую?

Если нет, то какой способ использовать? Моя программа использует термопринтер.

ответ

16

PrintController Вы используете.

В состав .NET Framework входят три контроллера печати, которые производны от PrintController, которые помогают выполнять общие задачи. StandardPrintController печатает документ на принтере. PreviewPrintController генерирует предварительный просмотр того, как будет выглядеть документ при печати, и используется классами PrintPreviewControl и PrintPreviewDialog. PrintControllerWithStatusDialog обеспечивает диалоговое окно состояния печати во время процесса печати.

Похоже, вы используете PrintControllerWithStatusDialogPrintController.


Оговорка: Я не в состоянии проверить, что основной PrintController не действует таким же образом.

Согласно этому MSDN Forum PostingPrintControllerWithStatusDialog по умолчанию:

Он предлагает что-то вроде этого:

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

Если вы не назначайте PrintDocument.PrintController свойства, то вы получите контроллер печати по умолчанию. Экземпляр PrintControllerWithStatusDialog, который отображает диалог прогресса, подсчет страниц и обычно информирует пользователя о том, что программа не отвечает по какой-либо причине, но в противном случае не висит.

Просто переназначьте его в конструкторе формы. Код котельной установки:

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

И вам нужно будет сделать что-то еще, чтобы сообщить пользователю, что печать выполняется. По крайней мере, отобразите hourglass cursor.