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

メニューへ戻ります。 RichTextBox 関係のメニュー
1.RichTextBox コントロールに関するワンポイントテクニック集
2.RichTextBox コントロールの内容を印刷する方法
3.選択範囲の文字列を縦方向の指定位置に表示する(上揃え/下揃え)
4.RichTextBox に画像を縦横比を保持したまま指定サイズに伸縮して表示 
5.RichTextBox で左右のマージンを設定する
6.
7.
8. 
9. 
10. 
11.
12.
 . 
20.その他、当サイト内に掲載の RichTextBox に関するサンプル 


2.RichTextBox コントロールの内容を印刷する方法(22_Rtf_02) (旧、SampleNo.146)
1.RichTextBox コントロールの内容を印刷する方法
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 :追加なし
参照設定:
ツールボックスの右クリック、アイテムの選択 → .Net Framework コンポーネントで RichTextBoxPrintCtrl.dll を参照追加
使用コン:PrintDocument1 / PrintDialog1 / PrintPreviewDialog1 / PageSetupDialog1
トロール:RichTextBox1(RichTextBoxPrintCtrl1) / Button1(印刷)/ Button2(印刷プレビュー)/ Button3(ページ設定)
このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので)
必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい)
このページのトップへ移動します。 1.RichTextBox コントロールの内容を印刷する方法
VB6.0 の RichTextBox には、SelPrint メソッドがあり、RichTextBox コントロールの内容を印刷する事ができるのですが、なぜか VB2005 系の RichTextBox には、SelPrint メソッドのようなものがありません。
そこでと言う事でもないのでしょうが、MSDN の方に下記のような記事が記載されています。
Visual Basic .NET または Visual Basic 2005 を使用して RichTextBox コントロールの内容を印刷する方法
(リンクが切れている場合はタイトルで検索して調べて下さい)
上記の方法で作成した、RichTextBoxPrintCtrl.dll をツールボックスのアイテムの選択で、選択して、ツールボックスに追加された、RichTextBoxPrintCtrl を通常のコントロールと同様に Form に貼り付け、コントロール名を RichTextBox1 に変更して試しております。
上記、RichTextBoxPrintCtrl.dll を作成するのが困難な方は、下記よりダウンロードして試して見て下さい。
(VB2013 の環境で作成しておりますが、対象フレームワークを Framework 3.5 でコンパイルしておりますので、VB2005 以降で使用できます。VB2005、VB2010、、VB2013 で動作確認しております。)
 RichTextBoxPrintCtrl.dll のダウンロード先 richtextctl.zip(8KB)

上記コントロールを使った印刷設定は、下記になります。(表示するテキストは各自準備願います。)

Imports System.Drawing.Printing

Public Class Form1

#Region "本文関係の処理(Button_Click イベントの処理等)"

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If PrintDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
        PrintDocument1.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName
        PrintDocument1.Print()
    End If
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    PrintPreviewDialog1.ShowDialog()
End Sub


Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    'ページ設定ダイアログの設定及び表示
    '現在のページ設定ダイアログの設定を指定
    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
    PageSetupDialog1.PageSettings = printerPageSetting
    'ページ設定ダイアログの設定 OK ボタンがクリックされたらプレビュー表示
    If PageSetupDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
        PrintDocument1.DefaultPageSettings = printerPageSetting
        PrintPreviewDialog1.Document = PrintDocument1
        PrintPreviewDialog1.ShowDialog()
    End If
End Sub

#End Region

#Region "付帯処理関係(関数・メソッド及びWin32 API 関数の宣言及び変数の宣言等含む)"

Private printerPageSetting As New System.Drawing.Printing.PageSettings

Private Sub PrintDocument1_BeginPrint(sender As Object, e As PrintEventArgs) Handles PrintDocument1.BeginPrint
    checkPrint = 0
End Sub

Private Sub PrintDocument1_PrintPage(sender As Object, e As PrintPageEventArgs) Handles PrintDocument1.PrintPage
    '印刷した最後の文字位置を取得
    checkPrint = RichTextPrint1.Print(checkPrint, RichTextPrint1.TextLength, e)

    '印刷するテキストが残っていたら続きを印刷
    If checkPrint < RichTextPrint1.TextLength Then
        e.HasMorePages = True
    Else
        e.HasMorePages = False
    End If
End Sub

#End Region

#Region "起動時の処理(Form1_Load イベント等の処理"

Private checkPrint As Integer

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'------------------------------------------------------------------------------
    'リッチテキストファイルを読み込み表示
    RichTextPrint1.LoadFile("..\..\..\data\test.rtf", RichTextBoxStreamType.RichText)
End Sub

#End Region

End Class

 図1.上記実行結果(ページ設定してから印刷プレビューを実行)
vb2013richtextbox02_1

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


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


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


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



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


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





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