Как пропустить диалог печати в printDocument.print() и распечатать страницу напрямую?

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

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

Ответ 1

Какой PrintController вы используете.

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

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


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

В соответствии с этой публикацией форума MSDN PrintControllerWithStatusDialog по умолчанию:

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

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

Ответ 2

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

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

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

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