アクセス数 累計:000,125,391 昨日:000,000,050 本日:000,000,050
|
|
|
|
【Amazon ランキング:本 - ビジネス・経済】
|
|
印刷イメージを確認するためのプレビュー画面ですが、.NETフレームワークでこの画面が用意されています。
プリンタに出力するのとまったく同じ方法でプレビューが表示できます。
実装も難しくないので印刷プログラムを作成する際ぜひプレビューつけてみてください。 |
|
プレビュー画面の表示 |
印刷プレビュー画面を表示するにはまず PrintPreviewDialog を new します。そして作成した PrinterPreviewDialog
のインスタンスに PrinterDocument を指定して PrintPreviewDialog.ShowDialog() でプリンタダイアログを表示します。
PrintPreviewDialog.ShowDialog() が呼ばれると PrinterDocument の PrintPage イベントが呼ばれるのでそこでプレビュー画面への描画を行います。PrintPage
イベントはプレビュー画面で印刷ボタンがクリックされた際も呼ばれます。
[VB]
Using previewDlog As PrintPreviewDialog = New PrintPreviewDialog
' 印刷ドキュメント指定
previewDlog.Document = doc
' 表示位とサイズ設定
previewDlog.StartPosition = FormStartPosition.CenterScreen
previewDlog.Size = New Size(400, 600)
' プレビュー画面表示
previewDlog.ShowDialog(Me)
End Using
[C#]
using( PrintPreviewDialog previewDlog = new PrintPreviewDialog() ){
// 印刷ドキュメント指定
previewDlog.Document = doc;
// 表示位置とサイズ設定
previewDlog.StartPosition = FormStartPosition.CenterScreen;
previewDlog.Size = new Size(400, 600);
// プレビュー画面表示
previewDlog.ShowDialog(this);
}
|
印刷ダイアログの作成 |
|
Form1 に ボタンコントロール「Button1」を貼り付けます。
プロパティはデフォルトを使用します。
|
|
VB[Form1.vb] |
Imports System.Drawing.Printing
Public Class Form1
Private Const MAX_PAGE_COUNT As Integer = 5
' ページ番号
Private _pageNumber As Integer = 0
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Using doc As PrintDocument = New PrintDocument
' 用紙の向きを設定(横:True、縦:False)
doc.DefaultPageSettings.Landscape = False
' プリンタがサポートしている用紙サイズを調べる
For Each ps As PaperSize In doc.PrinterSettings.PaperSizes
' A4用紙に設定する
If ps.Kind = PaperKind.A4 Then
doc.DefaultPageSettings.PaperSize = ps
Exit For
End If
Next
' PrintPage イベントハンドル追加
AddHandler doc.PrintPage, AddressOf doc_PrintPage
' ページ番号初期化
_pageNumber = 1
' プレビュー画面表示
Using previewDlog As PrintPreviewDialog = New PrintPreviewDialog
' 印刷ドキュメント指定
previewDlog.Document = doc
' 表示位とサイズ設定
previewDlog.StartPosition = FormStartPosition.CenterScreen
previewDlog.Size = New Size(400, 600)
' プレビュー画面表示
previewDlog.ShowDialog(Me)
End Using
End Using
End Sub
' 印刷イベント処理
Private Sub doc_PrintPage(ByVal sender As Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs)
' 印刷範囲枠を描画
e.Graphics.DrawRectangle(Pens.Black, e.MarginBounds)
' ページ数印刷
e.Graphics.DrawString(String.Format("{0}ページ", _pageNumber), _
New Font("MSゴシック", 20, FontStyle.Bold, GraphicsUnit.Point), _
Brushes.Black, e.MarginBounds.X, e.MarginBounds.Y)
If _pageNumber < MAX_PAGE_COUNT Then
e.HasMorePages = True
' ページ番号加算
_pageNumber = _pageNumber + 1
Else
' 3ページ印刷したら終了
e.HasMorePages = False
' ページ番号初期化
_pageNumber = 1
End If
End Sub
End Class
|
|
C#[Form1.cs] |
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;
namespace Print_CS
{
public partial class Form1 : Form
{
private const int MAX_PAGE_COUNT = 5;
// ページ番号
private int _pageNumber = 0;
public Form1()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
using (PrintDocument doc = new PrintDocument())
{
// 用紙の向きを設定(横:true、縦:false)
doc.DefaultPageSettings.Landscape = false;
// プリンタがサポートしている用紙サイズを調べる
foreach (PaperSize ps in doc.PrinterSettings.PaperSizes)
{
// A4用紙に設定する
if (ps.Kind == PaperKind.A4)
{
doc.DefaultPageSettings.PaperSize = ps;
break;
}
}
// PrintPage イベントハンドル追加
doc.PrintPage += new PrintPageEventHandler(doc_PrintPage);
// ページ番号初期化
_pageNumber = 1;
// プレビュー画面表示
using( PrintPreviewDialog previewDlog = new PrintPreviewDialog() ){
// 印刷ドキュメント指定
previewDlog.Document = doc;
// 表示位置とサイズ設定
previewDlog.StartPosition = FormStartPosition.CenterScreen;
previewDlog.Size = new Size(400, 600);
// プレビュー画面表示
previewDlog.ShowDialog(this);
}
}
}
// 印刷イベント処理
void doc_PrintPage(object sender, PrintPageEventArgs e)
{
// 印刷範囲枠を描画
e.Graphics.DrawRectangle(Pens.Black, e.MarginBounds);
// ページ数印刷
e.Graphics.DrawString(String.Format("{0}ページ", _pageNumber),
new Font("MS ゴシック", 20, FontStyle.Bold, GraphicsUnit.Point),
Brushes.Black, e.MarginBounds.X, e.MarginBounds.Y);
if (_pageNumber < MAX_PAGE_COUNT)
{
e.HasMorePages = true;
// ページ番号加算
_pageNumber++;
}
else
{
// 3ページ印刷したら終了
e.HasMorePages = false;
// ページ番号初期化
_pageNumber = 1;
}
}
}
}
|
|
|
※このページで紹介しているサンプルコードについて管理者は動作保障をいたしません※
※サンプルコードを使用する場合は、自己責任でお願いします※
|
【楽天 ランキング:パソコン・周辺機器 - ノートパソコン】
|
|
|
|
このサイトはフリーソフトのMerge HTMLで作成されています。
このサイトはリンクフリーです。
|
ページの先頭に戻る |
Copyright© 2010-2015 Jun.Shiozaki All rights reserved. |
|
|
|