Druckvorschau OK aber gedruckt wird nur 1 leere Seite

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von DenniDewito.

    Druckvorschau OK aber gedruckt wird nur 1 leere Seite

    Hallo zusammen,

    ich habe mich mal ans Drucken gewagt und komme jetzt nicht weiter.

    Die Vorschau sieht so aus wie ich es erwarte. aber wenn ich dann das ergebnis ausdrucke spuckt der Drucke immer nur 1 lehre Seite aus.

    Um das naheliegenenste vorweg zu nehemen der Toner/tinte ist nicht alle. :D Der Ausdruck auf eine PDF drucker erhält das selbe ergebnis.

    Hier mein Code.

    VB.NET-Quellcode

    1. Private Sub cmdDruck_Click(sender As Object, e As EventArgs) Handles cmdDruck.Click
    2. intSeite = 1
    3. intEtiket = 1
    4. pdocEtiketten.DefaultPageSettings.PaperSize = New PaperSize("DinA4", 830, 1170)
    5. pdocEtiketten.DefaultPageSettings.Landscape = False
    6. Using dlg = New PrintDialog
    7. dlg.Document = Me.pdocEtiketten
    8. If dlg.ShowDialog <> Windows.Forms.DialogResult.OK Then
    9. Return
    10. End If
    11. End Using
    12. Using dlg = New PrintPreviewDialog
    13. dlg.Document = Me.pdocEtiketten
    14. dlg.WindowState = FormWindowState.Maximized
    15. If dlg.ShowDialog <> Windows.Forms.DialogResult.OK Then
    16. Return
    17. End If
    18. End Using
    19. End Sub
    20. Private Sub pdocEtiketten_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles pdocEtiketten.PrintPage
    21. Dim x As Integer = 35
    22. Dim y As Integer = 2
    23. For i As Integer = 1 To 8
    24. x = 35
    25. For j As Integer = 1 To 3
    26. Dim bol As Boolean = False
    27. For z As Integer = 0 To lEtikettDrucken.Count - 1
    28. If lEtikettDrucken(z)._Seite = intSeite Then
    29. If lEtikettDrucken(z)._Etiket = intEtiket Then
    30. If lEtikettDrucken(z)._Artikelnummer.Length > 4 Then
    31. pibArtikel.BackgroundImage = Code128(lEtikettDrucken(z)._Artikelnummer, "A")
    32. pibCharge.BackgroundImage = Code128(lEtikettDrucken(z)._Charge, "A")
    33. e.Graphics.DrawImage(pibArtikel.BackgroundImage, x, y, w, h)
    34. e.Graphics.DrawString(lEtikettDrucken(z)._ArtikelName, New Font("Calibre", 8, FontStyle.Regular), New SolidBrush(Color.Black), x, y + 40)
    35. e.Graphics.DrawImage(pibCharge.BackgroundImage, x, y + 60, w2, h)
    36. End If
    37. bol = True
    38. Exit For
    39. End If
    40. End If
    41. Next
    42. If bol Then
    43. x = x + w + 165
    44. intEtiket = intEtiket + 1
    45. End If
    46. Next
    47. y = y + h + 106
    48. If intEtiket = 25 Then
    49. intEtiket = 1
    50. intSeite = intSeite + 1
    51. e.HasMorePages = True
    52. End If
    53. Next
    54. End Sub


    Und hier meine Vorschau
    Bilder
    • Druckvorschau.png

      60,47 kB, 1.916×1.036, 1.100 mal angesehen
    @DenniDewito Verschiebe diese beiden Zeilen in das Event pdocEtiketten.BeginPrint, das findest Du im Designer, wenn Du auf das PrintDocument klickst und dann die Events aktivierst:

    VB.NET-Quellcode

    1. intSeite = 1
    2. intEtiket = 1

    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!