Comment sauter la boîte de dialog d’impression dans printDocument.print () et imprimer la page directement?

Lorsque j’utilise MyPrintDocument.print() dans une application Windows écrite en C #, une boîte de dialog s’affiche pour la routine d’impression du traitement Windows avec un bouton d’annulation. Je ne veux pas que cette boîte de dialog soit affichée, est-ce possible?

Si non, de quelle manière devrais-je utiliser? Mon programme utilise une imprimante thermique.

Quel PrintController utilisez-vous?

Le .NET Framework comprend trois contrôleurs d’impression dérivés de PrintController qui facilitent l’exécution des tâches courantes. StandardPrintController imprime un document sur une imprimante. PreviewPrintController génère un aperçu de l’apparence du document lorsqu’il est imprimé et est utilisé par les classes PrintPreviewControl et PrintPreviewDialog . PrintControllerWithStatusDialog fournit une boîte de dialog d’état d’impression pendant le processus d’impression.

On dirait que vous utilisez PrintControllerWithStatusDialog PrintController .


Avertissement: je ne suis pas en mesure de vérifier que le PrintController base PrintController pas de la même manière.

Selon ce forum MSDN, la PrintControllerWithStatusDialog par défaut de PrintControllerWithStatusDialog est la suivante:

Il suggère quelque chose comme ceci:

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

Si vous n’affectez pas la propriété PrintDocument.PrintController , vous obtenez un contrôleur d’impression par défaut. Une instance de PrintControllerWithStatusDialog qui affiche la boîte de dialog de progression, compte les pages et informe généralement l’utilisateur que le programme ne répond pas pour une raison, mais qu’il n’est pas bloqué.

Il suffit de le réaffecter dans le constructeur de formulaire. Le code de la plaque chauffante est:

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

Et vous devrez faire autre chose pour informer l’utilisateur qu’une impression est en cours. Au moins afficher un curseur de sablier .