Print Dialog Seitenauswahl

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von AbsolutCF.

    Print Dialog Seitenauswahl

    Hi Leute!

    Ich habe ein PrintDialog und ein Printdocument indem eine Liste generiert wird die über mehrere Seiten geht.

    Das drucken über mehrer Seien ist kein Problem. Jetzt will ich erreichen das man im PrintDialog einstellt das nur Seite 1-2 oder nur Seite 2 gedruckt werden sollen. Hab da auch was bei Galileo Open book gefunden aber irgendwie fuktioniert das nicht ganz richtig.

    VB.NET-Quellcode

    1. 'pd3 = Printdocument
    2. 'Dim von as Integer
    3. 'Dim bis as Integer
    4. Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    5. pd3.DefaultPageSettings.Landscape = True
    6. Dim d As New PrintDialog() : d.Document = pd3 : d.AllowSomePages = True
    7. If d.ShowDialog() = DialogResult.OK Then
    8. pd3.DocumentName = "Musterbuch" & Date.Today.Year
    9. Select Case d.PrinterSettings.PrintRange
    10. Case Printing.PrintRange.AllPages
    11. von = 1 : bis = d.PrinterSettings.MaximumPage
    12. Case Printing.PrintRange.SomePages
    13. von = d.PrinterSettings.FromPage : bis = d.PrinterSettings.ToPage
    14. End Select
    15. pd3.Print()
    16. End If
    17. End Sub
    18. Private Sub pd3_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pd3.PrintPage
    19. Dim font1 As New Font("Arial", 10, FontStyle.Regular, GraphicsUnit.Point)
    20. Dim font2 As New Font("Arial", 10, FontStyle.Bold, GraphicsUnit.Point)
    21. Dim font3 As New Font("Arial", 25, FontStyle.Bold, GraphicsUnit.Point)
    22. Dim penAus As New Pen(Brushes.Black, 2)
    23. Dim penIn As New Pen(Brushes.Black, 1)
    24. Dim oben As Integer = 120
    25. Dim zeilen_pro_seite As Integer = 34
    26. Static zeilenzähler As Integer
    27. Static counter As Integer = 1
    28. Static seite = 1
    29. Dim pagecount As Integer = (mainLoader.Items.Count - 1) / 34
    30. Dim diff As Integer = mainLoader.Items.Count - 1
    31. If diff - pagecount > 0 Then
    32. pagecount += 1
    33. End If
    34. 'Seiten Titel aufbauen
    35. e.Graphics.DrawString("Datum", font2, Brushes.Black, 20, 100)
    36. e.Graphics.DrawString("Lieferant", font2, Brushes.Black, 100, 100)
    37. e.Graphics.DrawString("Betreuer", font2, Brushes.Black, 180, 100)
    38. e.Graphics.DrawString("Muster", font2, Brushes.Black, 300, 100)
    39. e.Graphics.DrawString("Menge", font2, Brushes.Black, 620, 100)
    40. e.Graphics.DrawString("Order", font2, Brushes.Black, 680, 100)
    41. e.Graphics.DrawString("Tracking", font2, Brushes.Black, 820, 100)
    42. e.Graphics.DrawString("Forw.", font2, Brushes.Black, 945, 100)
    43. e.Graphics.DrawString("Eingang", font2, Brushes.Black, 1000, 100)
    44. For counter = counter To mainLoader.Items.Count - 1
    45. If seite >= von AndAlso seite <= bis Then
    46. zeilenzähler += 1
    47. If zeilenzähler >= zeilen_pro_seite Then
    48. zeilenzähler = 0
    49. seite += 1
    50. e.HasMorePages = True
    51. Exit Sub
    52. Else
    53. e.HasMorePages = False
    54. 'Druck Routine
    55. End If
    56. End If
    57. Next
    58. e.HasMorePages = False
    59. zeilenzähler = 0
    60. counter = 1


    Es sind immoment Date vorhanden für zwei Seiten, Wenn ich im Dialog alle Seiten drucken auswähle kommen auch alle Seiten wie gewünscht raus aber bei Seite 1 bis 1 oder Seite 2 bis 2 kommen nur Blätter mit den Spalten Überschriften.

    Kann mir einer helfen wo der Fehler ist?