投稿者 うさぎ  (学生) 投稿日時 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