VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

メニューへ戻ります。 TextBox コントロール関係のメニュー
1.TextBox コントロールに関するワンポイントテクニック集
2.TextBox コントロールへのフォーカス移動時の操作色々
3.TextBox でコピー・貼り付け・切り取り・元に戻す他 
4.Enter キー及び↑↓キーによるフォーカス移動 
5.TextBox で数値しか入力できないように制限する
6.TextBox における総行数・現在行・現在桁の取得
7.TextBox で行毎テキストの操作色々
8.テキスト中に異種文字が混在していないかを調べる
9.テキストファイルを読み込み TextBox に表示及び保存
10.TextBox のテキストを複数ページにわたっての印刷
11.
12.
 . 
20.その他、当サイト内に掲載の TextBox コントロールに関するサンプル 


10.TextBox のテキストを複数ページにわたっての印刷(23_Txt_10) (旧、SampleNo.119)
1.TextBox のテキストを複数ページ(ページ設定を反映して)にわたっての印刷
2.
3.
4.
5.
6.

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86
Option :[Compare Text] [Explicit On] [Infer On] [Strict On]
Imports :追加なし
参照設定:
追加なし
使用コン:Button1 / Button2 / PrintDocument1 / TextBox1
トロール:
このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので)
必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい)
このページのトップへ移動します。 1.TextBox のテキストを複数ページ(ページ設定を反映して)にわたっての印刷

Private printerPageSetting As New System.Drawing.Printing.PageSettings
Private printText As String   '印刷するテキスト

Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    Dim printFont As Font = TextBox1.Font  'TextBox のフォントで印刷
    Dim newStrFormat As New StringFormat  '行間等の文字列の書式情報を表すオブジェクト
    Dim charsFitted As Integer       '文字列の文字数
    Dim linesFilled As Integer       '文字列のテキスト行数
    Dim measureString As String       '1ページ内の文字列
    'ページ設定で指定した印刷領域を確保する
    Dim rect As New RectangleF(e.MarginBounds.Left, e.MarginBounds.Top, e.MarginBounds.Width, e.MarginBounds.Height)
    '1ページ内に印刷できる文字数・行数を調べる為の領域を定義
    Dim layoutSize As New SizeF(e.MarginBounds.Width, e.MarginBounds.Height - printFont.GetHeight(e.Graphics))
    'テキストが最も近い語にトリムされるよう指定する(印刷範囲のカット時の処理)
    newStrFormat.Trimming = StringTrimming.Word
    '指定したFontオブジェクトで印刷した場合の1ページ内に収まる文字列を計測
    e.Graphics.MeasureString(printText, printFont, layoutSize, newStrFormat, charsFitted, linesFilled)
    '指定の長さ(1ページに収まる)の文字列を取得
    measureString = printText.Substring(0, charsFitted)
    '指定した位置に指定した Brush と Font で指定した文字列を印刷
    e.Graphics.DrawString(measureString, printFont, Brushes.Black, rect, newStrFormat)
    '次ページに印刷する文字があるかどうかを調べる
    If charsFitted < printText.Length Then
        printText = printText.Substring(charsFitted)  '追加のページに印刷する文字列
        e.HasMorePages = True    '追加のページを印刷する場合は true
    Else
        e.HasMorePages = False   '追加のページは印刷しない False
        printText = TextBox1.Text
    End If
End Sub

Private Sub TextBox1_Leave(sender As Object, e As EventArgs) Handles TextBox1.Leave
    printText = TextBox1.Text
End Sub

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
'ページ設定ダイアログの設定及び表示
    '現在のページ設定ダイアログの設定を指定
    printText = TextBox1.Text
    Using PageSetupDialog1 As New PageSetupDialog
        With printerPageSetting.Margins
            .Left = CInt(.Left * 2.54 / 10) * 10
            .Top = CInt(.Top * 2.54 / 10) * 10
            .Right = CInt(.Right * 2.54 / 10) * 10
            .Bottom = CInt(.Bottom * 2.54 / 10) * 10
        End With
        With PageSetupDialog1
            .PageSettings = printerPageSetting
            .ShowDialog()
        End With
    End Using
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'印刷プレビューの表示
    'ページ設定ダイアログの設定の内容を反映
    printText = TextBox1.Text
    Using PrintPreviewDialog1 As New PrintPreviewDialog
        PrintDocument1.DefaultPageSettings = printerPageSetting
        With PrintPreviewDialog1
            .Document = PrintDocument1
            .ShowDialog()
        End With
    End Using
End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
'フォントダイアログボックスを使ってのフォントの設定
    Using fontDialog1 As New FontDialog
        With fontDialog1
            .ShowColor = True           'ダイアログボックスに色の選択肢を表示
            .MinSize = 8                'ユーザーが選択できる最小値を設定
            .MaxSize = 24               'ユーザーが選択できる最大値を設定
            .Font = TextBox1.Font       '現在の設定のフォントを表示
            .Color = TextBox1.ForeColor '現在の設定のフォントカラーを表示
            'ダイアログボックスを表示しOKボタンが押されたら
            If .ShowDialog = Windows.Forms.DialogResult.OK Then
                TextBox1.Font = .Font           'ダイアログボックスでの設定を
                TextBox1.ForeColor = .Color     'テキストボックスのフォントに設定
            End If
        End With
    End Using
End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'テキストファイルを現在のエンコード(シフトJIS)で開く
    Using sr As New System.IO.StreamReader("..\..\..\data\test.txt", System.Text.Encoding.Default)
        'TextBox に読込み表示
        TextBox1.Text = sr.ReadToEnd
    End Using
End Sub

 図1.上記実行結果
 vb2013textbox10_1
今回は、複数ページにわたっての印刷設定方法を目的にサンプルを作っておりますので、プリンターの設定やプリンターの印刷マージン等は省略しています。
テキストの印刷が目的なら RichTextBox を使って、(RichTextBox コントロールの内容を印刷する方法)印刷した方がカラー表示等の印刷もできるので、TextBox での印刷は、単純、簡単にした方がと思い、後はご自由に付加機能を追加して下さい。

このページのトップへ移動します。 2.


このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5. 



このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
テキストボックス テキストボックス




このページのトップへ移動します。