Hasmorepages属性失败

时间:2018-10-15 20:45:45

标签: vb.net visual-studio-2012

我创建了一个例程,该例程旨在基于先前存储的行信息队列来打印可变数量的行和/或页面。每一页打印都很好,但是当打印多于一页时,两页叠印。我看不到我的逻辑错误,但必须有一个。违规代码的副本如下。 Nextline.newpage是设置为true的布尔值,用于强制创建新页面。在我的文本示例中,有六个“ Newpage”和“ hasmorepages”设置为true六次,并且例程退出了六次。输出仍然是四页,一张正确打印,三页两张打印在一张纸上。任何帮助将不胜感激。顺便说一句,这是我的第一个问题,请保持友善。

Private Sub PrintLines(Sender As Object, e As PrintPageEventArgs) Handles PrintDoc.PrintPage
    Dim White As String = GetARGBString(PrinterDefaultBackcolor)
    Do Until Lines.Count = 0
        Dim Nextline As Lineformat = Lines.Dequeue
        If Nextline.NewPage Then
            e.HasMorePages = True
            Exit Sub
        End If
        With Nextline
            Dim LineBackColor As String = Nextline.backColor
            If LineBackColor <> White Or .Borders = True Then DrawShape(Nextline, e)
            If .Text <> "" Then DrawText(Nextline, e)
        End With
    Loop

End Sub

Private Sub DrawShape(Line As Lineformat, E As PrintPageEventArgs)
    With Line
        Dim Top As Integer = .Top * 100
        Dim Left As Integer = .Left * 100
        Dim Width As Integer = .BackGroundWidth * 100
        Dim Height As Integer = .BackGroundHeight * 100
        Dim Point As New Point(Left, Top)
        Dim Size As New Size(Width, Height)
        Dim Rect As New Rectangle(Point, Size)
        Dim TransparentFillColor As String = "00" & Strings.Right(.backColor, 6)
        Dim FillColor As FullColor = GetColorFromString(.backColor)
        Dim BorderPen As New Pen(Color.Black)
        Dim FillBrush As New SolidBrush(FillColor.Color)
        E.Graphics.FillRectangle(FillBrush, Rect)
        If Line.Borders = True Then
            E.Graphics.DrawRectangle(BorderPen, Rect)
        End If
    End With

End Sub
Private Sub DrawText(Line As Lineformat, E As PrintPageEventArgs)

    With Line
        Dim MyFont = SetFontStyle(.FontFamily, .FontPoints, .FontBold, .FontItalic, .FontUnderline)
        Dim TextColor As FullColor = GetColorFromString(.ForeColor)
        Dim MyBrush As New SolidBrush(TextColor.Color)
        Dim top As Integer = .Top * 100
        Dim Left As Integer = .Left * 100
        Dim Width As Integer = .LineWidth * 100
        Dim Height As Integer = .LineHeight * 100
        Dim point As New Point(Left, top)
        Dim Size As New Size(Width, Height)
        Dim Rect As New RectangleF(point, Size)
        Dim SF As New StringFormat()
        SF.FormatFlags = TextFormatFlags.WordEllipsis
        E.Graphics.DrawString(.Text, MyFont, MyBrush, Rect, SF)
    End With
End Sub

结束班级

0 个答案:

没有答案