0

Visual Studio 2008/C# を使用して書式設定されたデータを印刷するアプリを作成しています。表示したい形式でデータをフォーマットしました。レポートの最初のページには、2 ~ N ページとは異なるフォーマット要件があるため、2 つの印刷ドキュメントとイベント ハンドラーを使用しています。

印刷プレビューには、印刷しようとしているすべてのページの適切にフォーマットされたデータが表示されます。ただし、2 ~ N ページは実際には印刷されません。

コードをステップ実行したところ、データはイベント ハンドラーに正しく渡されています。これは、2 番目の印刷ドキュメントのイベント ハンドラを呼び出すコード ブロックです。私は何を間違っていますか?

         // 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();
        } 

お時間をいただきありがとうございます。

4

1 に答える 1

1

ドキュメントを印刷するには、次を使用します。

PrintDocument.Print

プレビューするときは、PrintDocument を PrintPreviewDialog に割り当てます。

printPreview2.Document = ItemsPrintDocument;

PrintPreviewDialog を表示すると、PrintDocument の PrintController が PreviewPrintController に置き換えられ、PrintDocument.Print が呼び出されます。

このアクションにより、画像 (メタファイル) のリストが各ページに 1 つずつ生成されます。

次に、元の PrintController を PrintDocument に復元し、画像を表示します。

PrintPreviewDialog で PrintButton を押すと、独自の PrintController で PrintDocument.Print を呼び出します。

正しい動作のために、BeginPrint の PrintDocument イベントを使用して、変数を新しい PrintDocument.Print に初期化できることに注意してください。

PrintPreviewDialog を使用する場合、PrintDocument.Print を呼び出す必要はありません。

于 2010-06-29T06:09:53.973 に答える