2009-04-09 8 views
0

PrintDocumentを使用してDataGridViewを印刷しようとしています。私のPrintPageイベントハンドラでは、e.Graphicsオブジェクトを使用してグリッド線を描画し、作成された「セル」のテキストを印刷します。これは、Microsoftが実際に行ったはずですが、私は逸脱します。変換を使用すると、印刷出力が印刷プレビューのように見えない

とにかく、これはうまくいきます。 PrintDocumentはPrintPreviewDialogに関連付けられていて、DGVを開くと正しく表示されます。ユーザーはプレビューダイアログの印刷ボタンをクリックして印刷物を得ることができます。私の問題は、DGVがページの幅が広すぎることがあることです。そのため、水平方向のみに合わせて拡大縮小したいと考えています。私は実際に何かを描く前に、

e.Graphics.ScaleTransform(printableWidth/gridWidth) 

と呼んでいます。これによりプレビューが正確に見えますが、何らかの理由でスケーリングのコードを追加する前とまったく同じように見えます。レポートが広すぎると、ページ!

プレビューのためにPrintPageイベントが処理される方法とプリンタに送信される方法にはいくつかの違いがありますか?私の常用のPostScriptオフィスレーザプリンタは、ScaleTransform機能を処理できないでしょうか?私は、それが送信されたものを盲目的に印刷するべきだと思うだろうが、多分私が思ったより多くの処理が関わっているかもしれない。

答えて

0

OK、私は問題を発見しました - 私はScaleTransformを各ページに呼び出すと思っていましたが、実際にはPrintPageハンドラの最初の呼び出しでのみ実行されていました。その後の呼び出しは、それがラップされているという条件のために行をスキップしていました。したがって、一言で言えば、印刷物を変換する場合は、すべてのページごとに個別に行うようにしてください。

関連する問題