メニュー・印刷プレビュー(横向き)VB2005

VB Tips And Sample(HOME)(VB.NET Sample インデックス)

メニュー・印刷プレビュー(横向き)VB2005


メニューの実装

メニュー VB

「MenuStrip」コントロールをフォームにドラッグドロップ。
プロパティーコントロールの「標準項目の挿入」をクリックすると労せずしてメニューの雛形が出来上がる。

印刷プレビューの実装

印刷プレビュー VB

「PrintPreviewDialog」「PrintDocument」コントロールをフォームにドラッグドロップ。
先程追加したメニューの「印刷プレビュー」のイベントハンドラに、印刷データをゴリゴリと書く。
ここではCSVでデータを作成している。
その印刷データだが、実際には、印刷データをグラフィックスに描画することが必要になる。
その部分が「PrintDocument1_PrintPage」。
e.Graphics.DrawStringメソッドで書いている。因みに「vbCrLf」も改行として書いてくれる。

印刷プレビュー用紙を横向きに変更する。

印刷プレビュー VB

横向きにするには
「PrintDocument1_QueryPageSettings」で
「e.PageSettings.Landscape = True」とする必要がある。
他の箇所でPrintDocument1のLandscapeを変更しても意味がないようだ?


Private Sub 印刷プレビューVToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 印刷プレビューVToolStripMenuItem.Click
        '印刷プレビュー
        '印刷データをゴリゴリと書く()

        Dim i As Integer = 1
        PrintData = "リンク一覧" & vbCrLf
        Do Until i = Me.ListView1.Items.Count + 1
            'CSV形式で
            PrintData = PrintData & """" & Me.ListView1.Items(i - 1).SubItems(0).Text & """,""" & _
                             Me.ListView1.Items(i - 1).SubItems(1).Text & """,""" & _
                            Me.ListView1.Items(i - 1).SubItems(2).Text & """" & vbCrLf
            i = i + 1
        Loop

        PrintDocument1.DocumentName = "リンク一覧"
        ' PrintDocument1.DefaultPageSettings.Landscape = True '横向きに ここでは関係ないようだ

        With Me.PrintPreviewDialog1
            .Document = Me.PrintDocument1
            .ShowDialog()
            .SetDesktopLocation(Me.Location.X, Me.Location.Y) '有効にならない?
        End With

    End Sub


    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        e.Graphics.DrawString(PrintData, New Font("MS ゴシック", 5), Brushes.Black, e.MarginBounds.Left, e.MarginBounds.Top, New StringFormat())
        e.HasMorePages = False
    End Sub

    Private Sub PrintDocument1_QueryPageSettings(ByVal sender As Object, ByVal e As System.Drawing.Printing.QueryPageSettingsEventArgs) Handles PrintDocument1.QueryPageSettings
        e.PageSettings.Landscape = True '横向きに
    End Sub




VB Tips And Sample(HOME)(VB.NET Sample インデックス)