DOBON.NET DOBON.NETプログラミング掲示板過去ログ

印刷について

分類:[全般]

2003/07/23(Wed) 01:55:21 編集(管理者)

vb.netを使用しております
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim printdoc As New PrintDocument()
AddHandler printdoc.PrintPage, AddressOf Print
printdoc.Print()

End Sub
Private Sub Print(ByVal sender As Object, ByVal e As PrintPageEventArgs)
Dim text As String = textbox1.text
e.Graphics.DrawString(text, New Font("century", 10), Brushes.Black, 2, 50)
End Sub

こんなコードを書いてtextbox1の内容をプリンタで印刷させようとしているのですが、一枚の紙で印刷できる以上の行数をtextboxに書くと、一枚目は印刷されるのですが、二枚目以上は印刷されません。どのようにしたら良いのでしょうか?わかる方がいらっしゃいましたらご助言をお願いします。
  • 題名: 印刷について
  • 著者: ひろき
  • 日時: 2003/07/22 11:06:56
  • ID: 199
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
すいません。タイトル付け忘れちゃいました。
■No198に返信(ひろきさんの記事)

> こんなコードを書いてtextbox1の内容をプリンタで印刷させようとしているのですが、一枚の紙で印刷できる以上の行数をtextboxに書くと、一枚目は印刷されるのですが、二枚目以上は印刷されません。どのようにしたら良いのでしょうか?わかる方がいらっしゃいましたらご助言をお願いします。

複数行の文字列を印刷するサンプルがヘルプにあります。

PrintDocument クラス
http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfSystemDrawingPrintingPrintDocumentClassTopic.asp

#タイトルを変更しておきました。
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim printdoc As New PrintDocument()
AddHandler printdoc.PrintPage, AddressOf Print
printdoc.Print()

End Sub
Private Sub Print(ByVal sender As Object, ByVal e As PrintPageEventArgs)
Dim text As String = textbox1.text
e.Graphics.DrawString(text, New Font("century", 10), Brushes.Black, 2, 50)

if (一枚でプリントできる以上の行数があったなら) then
e.HasMorePages= True
Else
e.HasMorePages=False
End if
End Sub

このように書き換えたのですが、無限ループに入ってしまいます。
なぜなのでしょうか?

>管理人さんへ
タイトル書き換えてもらってありがとうございます。
■No209に返信(ひろきさんの記事)
> このように書き換えたのですが、無限ループに入ってしまいます。
> なぜなのでしょうか?

Dim text As String = textbox1.text
e.Graphics.DrawString(text, New Font("century", 10), Brushes.Black, 2, 50)

では、すべてのページをtextbox1.textで印刷することになりますよね?印刷する位置を覚えておいて、変更しなければだめでしょう。
管理人さんに紹介してもらったヘルプに従ってもう一度プログラムを書き直したらほぼうまくいきました。(まだ日本語が文字化けするけど・・・)ありがとうございました。
解決済み!
■No223に返信(ひろきさんの記事)
> 管理人さんに紹介してもらったヘルプに従ってもう一度プログラムを書き直したらほぼうまくいきました。(まだ日本語が文字化けするけど・・・)

フォントが日本語でないか、もしヘルプのようにテキストファイルを読み込んでいるのであれば、Encodingを指定すると解決するかもしれません。

文字コードを指定してテキストファイルを読み込む
http://dobon.net/vb/dotnet/file/readfile.html
  • 題名: Re[6]: 印刷について
  • 著者: ひろき
  • 日時: 2003/07/28 9:52:12
  • ID: 231
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
バッチリ文字化けなおりました。
ありがとうございます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板