Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
改ページ
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=10688#CommentId22670
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
うさぎ
 (学生)
投稿日時
2012/2/7 14:55:53
いつもお世話になっています。VB2005を勉強中のものです。
只今印刷について勉強しています。
文字の大きさ行数をコンボボックスで指定し、リッチテキストボックスに文章を書き込めば内容を繁栄するメモ帳みたいなものをつくりたいのですが、リッチテキストボックスに入れた内容がコンボボックスで指定した行数をこえた場合改ページしたいのですがどうしたらいいのかわかりません。
よろしくお願いします。
いまできているコード
Public Class Form1
Dim currentpage As Integer
Private flg As Boolean = False
Dim bityouseisita As Integer = 0
Dim bityouseimigi As Integer
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Combohaba.Items.Add("22")
Combohaba.Items.Add("27")
Combohaba.Items.Add("38")
Combohaba.Items.Add("44")
Combokazu.Items.Add("5")
Combokazu.Items.Add("10")
Combokazu.Items.Add("20")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PrintDocument1.Print()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
PrintPreviewDialog1.ShowDialog()
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim g As Graphics = e.Graphics
Dim okisa As Single
If Combohaba.SelectedIndex = 0 Then
okisa = 14
ElseIf Combohaba.SelectedIndex = 1 Then
okisa = 17
ElseIf Combohaba.SelectedIndex = 2 Then
okisa = 24
ElseIf Combohaba.SelectedIndex = 3 Then
okisa = 28
End If
'フォントスタイル
Dim ItemFont As Font = New Drawing.Font("MS Pゴシック", okisa, FontStyle.Bold)
Dim haba As String = 0 '行幅
Dim kazu As String = 0 '行数
Dim waku As Integer = 0 '全体の枠の大きさ
haba = Combohaba.SelectedItem
kazu = Combokazu.SelectedItem
waku = haba * kazu '全体の枠=行数*行幅
'**************************
' 改行
'**************************
Dim a As String = "" '文字の幅
Dim tasugyou As Integer = 0 '次の行へ
For moji As Integer = 0 To RichTextBox1.Text.Length - 1 'リッチテキストのなかの文字全部
a &= RichTextBox1.Text(moji) 'リッチテキストのなかの文字一つ一つaという変数に入れる
If RichTextBox1.Text(moji) = ControlChars.Lf Then '改行させれれば書き込み
e.Graphics.DrawString(a, ItemFont, Brushes.Black, 30, 340 + bityouseisita + (tasugyou * haba))
a = ""
tasugyou += 1
End If
Dim sTest As Single = g.MeasureString(a, ItemFont).Width
If sTest > 760 Then 'aの文字幅が印刷ページの横幅よりもおおきくなったら書き込み改行
e.Graphics.DrawString(a, ItemFont, Brushes.Black, 30, 340 + bityouseisita + (tasugyou * haba))
a = ""
tasugyou += 1
End If
Next
'行幅、行数を指定して印刷内容に反映
haba = Combohaba.SelectedItem
kazu = Combokazu.SelectedItem
Dim n As Integer
Dim gyousuu As Integer = 340 + haba '指定された幅を足し行間とする
'Dim sotowaku As Integer
For n = 0 To kazu '指定されたkazuの行数繰り返し線を引く
If n = 0 Then
gyousuu = 340 + haba - haba
e.Graphics.DrawLine(New Pen(Color.Black), 20, gyousuu, 810, gyousuu)
Else
gyousuu = gyousuu + haba
e.Graphics.DrawLine(New Pen(Color.Black), 20, gyousuu, 810, gyousuu)
End If
Next
e.HasMorePages = False
End Sub
End Class