tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 を使って、自分のフォーム上に
プレビュー画面を組み込むこともできます。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。