2009-08-31 6 views
0

J'écris une application pour imprimer des données formatées en utilisant Visual Studio 2008/C#. J'ai formaté les données de la façon que je veux l'afficher. J'utilise deux documents d'impression et des gestionnaires d'événements, car la première page du rapport comporte des exigences de formatage différentes des pages 2 à N.Pourquoi l'aperçu avant impression affiche-t-il des pages correctement formatées qui ne s'impriment pas réellement?

La fonction Aperçu avant impression affiche les données correctement formatées pour toutes les pages que j'essaie d'imprimer. Néanmoins, les pages 2 à N ne s'imprimeront pas réellement.

J'ai parcouru mon code et les données sont transmises correctement au gestionnaire d'événements. C'est le bloc de code qui appelle le gestionnaire d'événements du second document d'impression. Qu'est-ce que je fais mal?

  // First page print limit has been reached. Do we 
     // still have unprinted items in the arraylist? Call the second 
     // print handler event and print those items. 
     if (((alItemsToPrint.Count) - iItemPrintedCount) > 0) 
     { 
      // Getting a look at my formating 
      PrintPreviewDialog printPreview2 = new PrintPreviewDialog(); 
      printPreview2.Document = ItemsPrintDocument; 
      printPreview2.ShowDialog(); 
      printPreview2.Dispose();        

      // Print item overflow pages 
      ItemsPrintDocument.Print(); 

      // Release the resources consumed by this print document 
      ItemsPrintDocument.Dispose(); 
     } 

Merci pour votre temps, tout le monde.

Répondre

1

Pour imprimer un document, vous utilisez:

PrintDocument.Print 

Lorsque Preview, vous attribuez le PrintDocument à PrintPreviewDialog

printPreview2.Document = ItemsPrintDocument; 

Lorsque vous affichez PrintPreviewDialog, il remplace à PreviewPrintController et appel PrintController la PrintDocument PrintDocument.Print.

Cette action génère une liste d'images (métafichiers) une sur chaque page.

Ensuite, il restaure le PrintController d'origine sur PrintDocument et affiche les images.

Lorsque vous appuyez sur le bouton PrintButton dans PrintPreviewDialog, il appelle PrintDocument.Print avec PrintController d'origine.

Notez que pour un comportement correct, vous pouvez utiliser l'événement BeginPrint 'PrintDocument pour initialiser vars à nouveau PrintDocument.Print.

Si vous utilisez PrintPreviewDialog, vous n'avez pas besoin d'appeler PrintDocument.Print.

Questions connexes