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.上記実行結果(ページ設定してから印刷プレビューを実行) |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |