Seite 2 in PrintDocument

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von weedl89.

    Seite 2 in PrintDocument

    Hallo Forum,

    ich habe ein kleines Problem mit einem Formular was gedruckt werden soll.

    Ich habe auch schon die erste seite gut gefüllt bekommen, nur jetzt ist die Seite zu ende. Ich brauch aber noch etwas platz. Also muss eine zweite seite her.

    Mein code:

    VB.NET-Quellcode

    1. Private Sub PrintDocument1_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    2. PrintPreviewDialog1.WindowState = FormWindowState.Maximized
    3. 'das ist auf der ersten seite.
    4. e.Graphics.DrawString("Kundennummer:", New Font("Arial", 14), Brushes.Black, New Point(20, 100))
    5. e.Graphics.DrawString(tb_kundennummer.Text, New Font("Arial", 14), Brushes.Black, New Point(230, 100))
    6. e.Graphics.DrawString("Name/Firma:", New Font("Arial", 14), Brushes.Black, New Point(20, 125))
    7. e.Graphics.DrawString(tb_name.Text, New Font("Arial", 14), Brushes.Black, New Point(230, 125))
    8. e.Graphics.DrawString("Zusatz:", New Font("Arial", 14), Brushes.Black, New Point(20, 150))
    9. e.Graphics.DrawString(tb_zusatz.Text, New Font("Arial", 14), Brushes.Black, New Point(230, 150))
    10. e.Graphics.DrawString("Straße/Hausnummer:", New Font("Arial", 14), Brushes.Black, New Point(20, 175))
    11. e.Graphics.DrawString(tb_straße.Text, New Font("Arial", 14), Brushes.Black, New Point(230, 175))
    12. e.Graphics.DrawString("PLZ/Ort:", New Font("Arial", 14), Brushes.Black, New Point(20, 200))
    13. e.Graphics.DrawString(tb_plz.Text, New Font("Arial", 14), Brushes.Black, New Point(230, 200))
    14. e.Graphics.DrawString(" / ", New Font("Arial", 14), Brushes.Black, New Point(290, 200))
    15. e.Graphics.DrawString(tb_ort.Text, New Font("Arial", 14), Brushes.Black, New Point(310, 200))
    16. ' und das sollte nach möglichkeit auf die zweite seite.
    17. e.Graphics.DrawImage(New Bitmap("E:\Bilder\Alex\Don\IMGP5753.jpg"), 20, 2200, 350, 220)
    18. e.HasMorePages = False
    19. End Sub


    ich weiß nicht ob man dann mit den y koordinaten einfach weiter runter geht oder ob man eine zweite seite anlegt und die koordinaten da wieder bei null anfangen?

    Wäre klasse wenn mir einer unter die arme greifen könnte.

    Ich stehe gerade auf dem schlauch.
    Zusätzlich brauchst Du dann noch einen Seitenzähler. Wenn Du in die PrintPage-Prozedur reinkommst, startest u stets eine neue Seite, also pass auf, dass Du nicht allen Text 2x druckst.
    Mach Deine Print-Position dynamisch, wenn Du eine Zeile einschieben musst, brauchst Du sie dann auch nur noch einzuschieben und musst nicht die Zeilenposition aller folgenden Zeilen editieren.
    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 offline war.

    das klingt schon mal ganz gut. nur leider habe ich gerade keine ahnung wie ich das umsetze. Ich möchte auch nicht nochmal alles umschreiben, denn das ist eine menge.

    ich bin jetzt mit der ersten seite komplett fertig und möchte auf der zweiten seite nur noch ein paar bilder einfügen.

    nur an dem seitenumbruch scheiter ich.
    Probier mal dies:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private aktuelleSeite As Integer = 0
    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. If aktuelleSeite = 0 Then
    10. g.DrawString("1. Seite", New Font("Arial", 20), Brushes.Black, 30, 30)
    11. e.HasMorePages = True
    12. aktuelleSeite += 1
    13. Else
    14. g.DrawString("2. Seite", New Font("Arial", 20), Brushes.Black, 30, 30)
    15. End If
    16. End Sub
    17. 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!