○VB.netからの印刷処理

■1ページだけの印刷----------------------------------------------------------

    Private WithEvents PrintDocument1 As New System.Drawing.Printing.PrintDocument()

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        PrintDocument1.DocumentName = "てすと"
        PrintDocument1.Print()'イベントを送信

    End Sub

'イベントを選んで追加します。
    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Dim PrtFont As New Font("MS ゴジック", 12)

        Dim left As Single = e.MarginBounds.Left 'マージン
        Dim top As Single = e.MarginBounds.Top
        Dim right As Single = e.MarginBounds.Right
        Dim bottom As Single = e.MarginBounds.Bottom

        Dim width As Single = right - left
        Dim height As Single = bottom - top

        e.Graphics.DrawString("いなばの印刷", PrtFont, Brushes.Black, left, top)
        e.Graphics.DrawString("いなばの印刷2行目", PrtFont, Brushes.Black, left, top + PrtFont.Height)

        e.Graphics.DrawLine(System.Drawing.Pens.Black, left, top + height / 2, right, top + height / 2)
        e.Graphics.DrawLine(System.Drawing.Pens.Black, left + width / 2, top, left + width / 2, bottom)
        e.Graphics.DrawEllipse(System.Drawing.Pens.Black, left + width / 2 - 100, top + height / 2 - 100, 200, 200)
    End Sub


上のコードを実行すると以下のような印刷結果が得られます。画像が汚くてすいません




■複数ページにまたがる印刷--------------------------------------------------------

2ページ印刷します。
2ページ印刷するということはつまり、2回イベントハンドラを実行するということです。

e.HasMorePages = True '印刷を繰り返します
e.HasMorePages = False '印刷を終わります

HasMorePagesによりイベントの連続発生を制御します。
もちろんTrueのままだと、印刷は止まりません
意図的にFalseを入れて止める必要があります。


    Private WithEvents PrintDocument1 As New System.Drawing.Printing.PrintDocument()

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        PrintDocument1.DocumentName = "てすと"
        PrintDocument1.Print()'イベントを送信

    End Sub

    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

        Static PageNo As Integer = 0 'ページをカウントします。
        PageNo = PageNo + 1


        Dim PrtFont As New Font("MS ゴジック", 12)

        Dim left As Single = e.MarginBounds.Left 'マージン
        Dim top As Single = e.MarginBounds.Top
        Dim right As Single = e.MarginBounds.Right
        Dim bottom As Single = e.MarginBounds.Bottom

        Dim width As Single = right - left
        Dim height As Single = bottom - top

        e.Graphics.DrawString(PageNo.ToString & "ページ目", PrtFont, Brushes.Black, left, top)
        e.Graphics.DrawString("いなばの印刷2行目", PrtFont, Brushes.Black, left, top + PrtFont.Height)

        e.Graphics.DrawLine(System.Drawing.Pens.Black, left, top + height / 2, right, top + height / 2)
        e.Graphics.DrawLine(System.Drawing.Pens.Black, left + width / 2, top, left + width / 2, bottom)
        e.Graphics.DrawEllipse(System.Drawing.Pens.Black, left + width / 2 - 100, top + height / 2 - 100, 200, 200)

        If (PageNo < 2) Then
            e.HasMorePages = True '印刷を繰り返します
        Else
            e.HasMorePages = False '印刷を終わります
            PageNo = 0
        End If

    End Sub

■プリンタの選択ダイアログを出して印刷する---------------------------------------------------



        Dim PDlg As New PrintDialog()
        PDlg.Document = PrintDocument1
        If (PDlg.ShowDialog = DialogResult.OK) Then
            PDlg.Document.Print()'イベントを送信
        End If

■プレビューダイアログを表示して印刷する-----------------------------------------------------



        Dim VDlg As New PrintPreviewDialog()
        VDlg.Document = PrintDocument1
        VDlg.ShowDialog()

■ページセットアップダイアログを表示



        Dim PSDlg As New PageSetupDialog
        PSDlg.Document = PrintDocument1
        PSDlg.ShowDialog()



▲トップページ > Visual BASIC と C#