タイトル : Re^3: DataGridViewの内容を印刷 投稿日 : 2007/04/19(Thu) 11:27 投稿者 : 魔界の仮面弁士
今回の目的に合致するかどうかは別として、PrintDocument 以外の印刷手法として、 [SQL Server Reporting Services] hhttp://msdn2.microsoft.com/ja-jp/library/ms159106.aspx [ReportViewer] hhttp://msdn2.microsoft.com/ja-jp/library/ms251771%28VS.80%29.aspx [CrystalReport] hhttp://msdn2.microsoft.com/ja-jp/library/ms225270%28VS.80%29.aspx なども、余裕があれば調べてみると良いかも。 # それぞれ使い方が異なるので、今回は触れないでおきますが。 > PrintDocumentの使い方を理解していないため > どう組み合わせてよいのやらで調べている最中です。 チェックボックスが操作された場合、CheckedChanged イベントが発生しますし、 ボタンが押された場合には、Click イベントが発生しますよね。 そして PrintDocument の場合、「n ページ目の印刷要求があった場合」に、 PrintDocument の「PrintPage イベント」が発生します。つまり実装者は、 PrintPage イベントに『印刷内容を描画するための処理』をコーディングすることになります。 ==== (1) 印刷内容の描画処理について ==== テキストの描画には、Graphics クラスを使います。 PrintPage イベント内では、 TextRenderer.DrawText(e.Graphics, "あいうえお", …) または e.Graphics.DrawString("あいうえお", …) などの形式で描画できます。 なお、上記「…」の部分には、フォント、描画色(正確にはブラシ)、 座標、レイアウト情報などを指定します。 ==== (2) ページ数の概念について ==== PrintPage イベント内で、 e.HasMorePages = False と設定した状態でイベントを抜けると、印刷処理が終了します。 (ちなみに、初期値は False です) そして、このプロパティに e.HasMorePages = True とすると、「まだ次のページがあるので、もう一回イベントを発生させてね」 という意味になります。 なお、現在何ページ目を印刷中であるかといった情報は、自分で管理する必要があります。 ==== (3) 印刷設定について ==== プリンタや用紙の指定を行うには、PrintDocument.PrinterSettings プロパティを使います。 ユーザに設定させるために、PrintPreviewDialog を併用すると便利でしょう。 また、ページごとに異なる用紙を使いたい場合などは、PrintPage イベント内で e.PageSettings を使う事もできます。 ==== (4) 印刷処理の開始 ==== プリンタに直接印字するには、PrintDocument.Print メソッドを使います。 あるいは、プレビュー画面を表示したいなら、PrintPreviewDialog を使うこともできます。 より細かな制御が必要なら、PrintPreviewControl を使って、自分のフォーム上に プレビュー画面を組み込むこともできます。 |