すらすらプログラマーへのお問い合わせ
すらすらのブログ
アクセス数  累計:000,569,497  昨日:000,000,148  本日:000,000,018
Loading
印刷
.NET プログラミング
プロパティグリッド
印刷
リストボックス
スレッド
リストビュー
インストーラー
やってみよう!

できるVisual Studio 2015 Windows /Android/iOS アプリ対応

独習C# 第3版

VisualBasic2013パーフェクトマスター (Perfect Master SERIES)

プログラミング.NET Framework 第4版 (Microsoft Press)

VisualBasic2013逆引き大全555の極意

猫でもわかるWindowsプログラミング 第4版 (猫でもわかるプログラミング)

VisualC#2013逆引き大全555の極意

印刷プレビュー 最終更新:2010/11/28
【Amazon ランキング:本 - コンピュータ・IT】

印刷イメージを確認するためのプレビュー画面ですが、.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#]
usingPrintPreviewDialog 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;

                
// プレビュー画面表示
                usingPrintPreviewDialog 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.