1

データ グリッド ビューのすべての行を別のページに印刷するときに、下のマージンを超えると問題が発生します。印刷プレビューをクリックすると、ページがノンストップで追加され続けます。これが私のコードです。

  Dim mRow As Integer = 0

    Dim newpage As Boolean = True

    With dgvItems

        Dim fmt As StringFormat = New StringFormat(StringFormatFlags.LineLimit)
        fmt.LineAlignment = StringAlignment.Center
        fmt.Trimming = StringTrimming.EllipsisCharacter
        Dim y As Single = a + 20

        Do While mRow < .RowCount
            Dim row As DataGridViewRow = .Rows(mRow)
            Dim x As Single = e.MarginBounds.Left
            Dim h As Single = 0

            For Each cell As DataGridViewCell In row.Cells

                Dim rc As RectangleF = New RectangleF(x, y, cell.Size.Width, 70)
                e.Graphics.DrawRectangle(Pens.Black, rc.Left, rc.Top, rc.Width, rc.Height)

                If (newpage) Then
                    e.Graphics.DrawString(dgvItems.Columns(cell.ColumnIndex).HeaderText, .Font, Brushes.Black, rc, fmt)

                Else
                    e.Graphics.DrawString(dgvItems.Rows(cell.RowIndex - 1).Cells(cell.ColumnIndex).FormattedValue.ToString(), .Font, Brushes.Black, rc, fmt)

                End If

                x += rc.Width

                h = Math.Max(h, rc.Height)

            Next

            newpage = False
            y += h
            mRow += 1

            If y + h > e.MarginBounds.Bottom Then
                e.HasMorePages = True
                mRow = 1
                newpage = True
                Exit Sub
            End If
        Loop
        mRow = 0

    End With

また、Visual Studio 2010 で vb のヘッダーとフッターを設定して、すべてのページでヘッダーとフッターを印刷できるようにする方法についてもお尋ねしたいと思います。

4

1 に答える 1