PrintDocument druckt nur letzte Seite

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    PrintDocument druckt nur letzte Seite

    Hi leute,

    ich sitze gerade vor einem kleinen problem, welches ich mir nicht recht erklären kann.

    Ich erstelle mittels code ein formular das zwei seiten hat. Die werden mir in der vorschau auch wunderbar angezeigt.

    Nur wenn ich auf drucken klicke, wird nur die zweite seite gedruckt.

    Hier mein code:

    VB.NET-Quellcode

    1. Private Sub PrintDocument1_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    2. Dim g As Graphics = e.Graphics
    3. PrintPreviewDialog1.WindowState = FormWindowState.Maximized
    4. If aktuelleSeite = 0 Then
    5. 'Seite 1
    6. g.DrawString("Bla Bla:", New Font("Arial", 20, FontStyle.Bold Or FontStyle.Underline), Brushes.Black, New Point(20, 20))
    7. 'Fußzeile
    8. g.DrawImage(New Bitmap("C:\Fußzeile.jpg"), 80, 1050, 656, 112)
    9. e.HasMorePages = True
    10. aktuelleSeite += 1
    11. Else
    12. 'Seite 2
    13. g.DrawString("Bla Bla:", New Font("Arial", 20, FontStyle.Bold Or FontStyle.Underline), Brushes.Black, New Point(20, 20))
    14. 'Fußzeile
    15. g.DrawImage(New Bitmap("C:\Fußzeile.jpg"), 80, 1050, 656, 112)
    16. End If
    17. End Sub



    habt ihr eine idee? bin etwas ratlos.


    Danke schonmal.
    Schreib in die PrintPage-Routine unten rein:

    VB.NET-Quellcode

    1. e.HasMorePages = (aktuelleSeite < DEINE_SEITENANZAHL)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    hi leute, sorry das ich so lange of war, jetzt isser wieder da :)

    ich habe es jetzt so in meinen code eingefügt:

    VB.NET-Quellcode

    1. 'Seite 2
    2. g.DrawString("Bla Bla:", New Font("Arial", 20, FontStyle.Bold Or FontStyle.Underline), Brushes.Black, New Point(20, 20))
    3. 'Fußzeile
    4. g.DrawImage(New Bitmap("C:\Fußzeile.jpg"), 80, 1050, 656, 112)
    5. End If
    6. e.HasMorePages = (aktuelleSeite < 2)
    7. End Sub


    nur leider funktioniert das nicht. jetzt erzeugt er jede menge seiten. immer die seite 2..

    ich peil das nicht :/
    Probier mal das aus:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private aktuelleSeite As Integer
    3. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    4. aktuelleSeite = 0
    5. PrintDocument1.Print()
    6. End Sub
    7. Private Sub PrintDocument1_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    8. Dim g As Graphics = e.Graphics
    9. Dim txt As String
    10. Select Case aktuelleSeite
    11. Case 0
    12. txt = "Dies ist die Seite 1"
    13. Case 1
    14. txt = "Dies ist die Seite 2"
    15. Case 2
    16. txt = "Dies ist die Seite 3"
    17. Case Else
    18. txt = "Dies ist letzte Seite"
    19. e.HasMorePages = False
    20. End Select
    21. g.DrawString(txt, New Font("Arial", 20), Brushes.Black, 30, 30)
    22. e.HasMorePages = (aktuelleSeite < 3)
    23. aktuelleSeite += 1
    24. End Sub
    25. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ja so kann ich mehrere seiten anlegen. das funktioniert auch ganz gut. Nur wird leider immer noch nur die letzte seite gedruckt.

    Komischer weiße, wenn ich die druckfunktion über einen button aufrufe und nicht über die seitenansicht drucke, werden beide Seiten gedruckt...
    Nimm meinen Code und merge Deinen da rein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!