Ich versuche einen Weg zu finden, mehrere Windows Forms als Bericht zu drucken. Ich habe mehrere Formulare, die die Rentenleistungen unserer Kunden berechnen, und ich versuche, diese Formulare zu drucken, damit unsere Kunden Handzettel erhalten. An diesem Punkt habe ich auf jedem Formular eine PrintDocument-Komponente und Ich kann jedes Formular auf verschiedenen Seiten als verschiedene Dokumente drucken, aber was ich versuche zu erreichen ist, alle diese Formulare in 1 PrintDocument Dokument mit 1 einzigen PrintButton Duplexdruck. Klicke auf ein weiteres Formular.Wie kann Duplexdruck mit mehreren Windows Forms in Visual Basic multipliziert werden?
Also, um Ihnen ein Beispiel zu geben. Ich habe 2 Windows Forms (Formular AOW und Formular Basisinfo) mit jeweils einer PrintDocument Komponente. Ich habe die Texte, Bilder, Diagramme usw. genau so gezeichnet, wie es sein sollte mit den richtigen Positionen im PrintDocument1_PrintPage Sub. Ich möchte Formulare AOW und Basisinfo in einer dritten Form namens CloseReport drucken.
Der Code habe ich bereits, die mir keine Duplex-Drucke gibt:
Basisinfo:
Public Class Basisinfo
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles ButtonPrinten.Click
For teller = 1 To 30
If inhoudlijst(teller, 0) = "" Then
inhoudlijst(teller, 0) = "Basisinfo"
inhoudlijst(teller, 1) = "True"
PrintDocument1.DefaultPageSettings.Landscape = True
PrintDocument1.DefaultPageSettings.PrinterSettings.Duplex = Printing.Duplex.Default
printarray3(teller) = PrintDocument1
Exit For
End If
Next
End Sub
Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim stringFormatCenter As New StringFormat()
stringFormatCenter.Alignment = StringAlignment.Center
stringFormatCenter.LineAlignment = StringAlignment.Center
Dim stringFormatFar As New StringFormat()
stringFormatFar.Alignment = StringAlignment.Far
stringFormatFar.LineAlignment = StringAlignment.Center
Dim stringFormatNear As New StringFormat()
stringFormatNear.Alignment = StringAlignment.Near
stringFormatNear.LineAlignment = StringAlignment.Center
'Alle TextBoxes met witte achtergrond
For Each TextBox In {TextBox17, TextBox18, TextBox35, TextBox1, TextBox29, TextBox2, TextBox3, TextBox4, TextBox12, TextBox13, TextBox10, TextBox9, TextBox26, TextBox8, TextBox7, TextBox16, TextBox21, TextBox14, TextBox28, TextBox27, TextBox6, TextBox23, TextBox19, TextBox31, TextBox24, TextBox25, TextBox30, TextBox15, TextBox34, TextBox22, TextBox20, TextBox33, TextBox32}
e.Graphics.DrawRectangle(Pens.Black, New Rectangle(TextBox.Left, TextBox.Top, TextBox.Width, TextBox.Height))
e.Graphics.FillRectangle(Brushes.White, TextBox.Left, TextBox.Top, TextBox.Width, TextBox.Height)
Next
'Alle TextbBoxes met gele achtergrond
For Each TextBox In {TextBox17, TextBox18, TextBox35, TextBox1, TextBox29}
e.Graphics.FillRectangle(Brushes.LightYellow, TextBox.Left, TextBox.Top, TextBox.Width, TextBox.Height)
Next
'Textboxes Centered
For Each TextBox In {TextBox17, TextBox18, TextBox35, TextBox1, TextBox29}
e.Graphics.DrawString(TextBox.Text, TextBox.Font, Brushes.Blue, New Rectangle(TextBox.Left, TextBox.Top, TextBox.Width, TextBox.Height), stringFormatCenter)
Next
'Textboxes Near
For Each TextBox In {TextBox2, TextBox3, TextBox4, TextBox12, TextBox13, TextBox10, TextBox9, TextBox26, TextBox8, TextBox7, TextBox16, TextBox21, TextBox14, TextBox28, TextBox27, TextBox6, TextBox23, TextBox19, TextBox31, TextBox24, TextBox25, TextBox30, TextBox15, TextBox34, TextBox22, TextBox20, TextBox33, TextBox32}
e.Graphics.DrawString(TextBox.Text, TextBox.Font, Brushes.Blue, New Rectangle(TextBox.Left, TextBox.Top, TextBox.Width + 20, TextBox.Height), stringFormatNear)
Next
'Textboxes Far
For Each TextBox In {}
e.Graphics.DrawString(TextBox.Text, TextBox.Font, Brushes.Blue, New Rectangle(TextBox.Left, TextBox.Top, TextBox.Width, TextBox.Height), stringFormatFar)
Next
For Each c As Control In Me.Controls
If c.GetType Is GetType(Label) Then
e.Graphics.DrawString(c.Text, c.Font, Brushes.Black, c.Left, c.Top)
End If
Next
End Sub
AOW:
Public Class AOW
Sub ButtonPrinten_Click(sender As Object, e As EventArgs) Handles ButtonPrinten.Click
For teller = 1 To 30
If inhoudlijst(teller, 0) = "" Then
inhoudlijst(teller, 0) = "AOW"
inhoudlijst(teller, 1) = "True"
PrintDocument1.DefaultPageSettings.Landscape = True
PrintDocument1.DefaultPageSettings.PrinterSettings.Duplex = Printing.Duplex.Default
printarray3(teller) = PrintDocument1
'printvlag_basisinfo = True
Exit For
End If
Next
Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim stringFormatCenter As New StringFormat()
stringFormatCenter.Alignment = StringAlignment.Center
stringFormatCenter.LineAlignment = StringAlignment.Center
Dim stringFormatFar As New StringFormat()
stringFormatFar.Alignment = StringAlignment.Far
stringFormatFar.LineAlignment = StringAlignment.Center
Dim stringFormatNear As New StringFormat()
stringFormatNear.Alignment = StringAlignment.Near
stringFormatNear.LineAlignment = StringAlignment.Center
'Alle TextBoxes met witte achtergrond
For Each TextBox In {Koptextbox, TextBox99, TextBox19, TextBox21, TextBox11, TextBox12, TextBox14, TextBox13, TextBox17, TextBox15, TextBox16, TextBox18}
e.Graphics.DrawRectangle(Pens.Black, New Rectangle(TextBox.Left, TextBox.Top, TextBox.Width, TextBox.Height))
e.Graphics.FillRectangle(Brushes.White, TextBox.Left, TextBox.Top, TextBox.Width, TextBox.Height)
Next
'Alle TextbBoxes met gele achtergrond
For Each TextBox In {Koptextbox, TextBox99, TextBox19, TextBox21, TextBox13, TextBox17, TextBox18, TextBox16}
e.Graphics.FillRectangle(Brushes.LightYellow, TextBox.Left, TextBox.Top, TextBox.Width, TextBox.Height)
Next
'Textboxes Centered
For Each TextBox In {Koptextbox, TextBox99, TextBox21, TextBox19, TextBox14, TextBox13, TextBox17, TextBox15, TextBox16, TextBox18}
e.Graphics.DrawString(TextBox.Text, TextBox.Font, Brushes.Blue, New Rectangle(TextBox.Left, TextBox.Top, TextBox.Width, TextBox.Height), stringFormatCenter)
Next
'Textboxes Near
For Each TextBox In {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox24, TextBox23, TextBox22}
e.Graphics.DrawString(TextBox.Text, TextBox.Font, Brushes.Blue, New Rectangle(TextBox.Left, TextBox.Top, TextBox.Width + 20, TextBox.Height), stringFormatNear)
Next
'Textboxes Far
For Each TextBox In {TextBox12}
e.Graphics.DrawString(TextBox.Text, TextBox.Font, Brushes.Blue, New Rectangle(TextBox.Left, TextBox.Top, TextBox.Width, TextBox.Height), stringFormatFar)
Next
For Each c As Control In Me.Controls
If c.GetType Is GetType(Label) Then
e.Graphics.DrawString(c.Text, c.Font, Brushes.Black, c.Left, c.Top)
End If
Next
End Sub
End Class
CloseReport:
Public Class CloseReport
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
PrintDocument1.DefaultPageSettings.Landscape = True
PrintDialog1.Document = PrintDocument1
If PrintDialog1.ShowDialog() = DialogResult.OK Then
For teller = 1 To 30
If IsNothing(printarray3(teller)) = False Then
printen6(printarray3(teller))
End If
Next teller
End If
End Sub
End Class
Wenn Sie wissen wollen, was die printen6 Funktion hat:
PrintDocument.PrinterSettings.DefaultPageSettings.PrinterResolution.Kind = Printing.PrinterResolutionKind.High
PrintDocument.PrinterSettings.DefaultPageSettings.Landscape = True
PrintDocument.PrinterSettings.DefaultPageSettings.Margins = New Printing.Margins(0, 0, 0, 0)
PrintDocument.DefaultPageSettings.PrinterSettings.Duplex = Printing.Duplex.Default
PrintDocument.Print()
Ich bin entweder denken, wie Printdocument-Dateien so Duplexdruck möglich ist, oder zum Erstellen mehrerer Seiten mit HasMorePages verschmelzen. Ich habe ziemlich viel über HasMorePages im Web gelesen, aber das liefert nur Code mit geladenen Textdateien.
Ich hoffe, dass Sie mir helfen können, da ich wirklich fest daran bin. Danke im Voraus!
Könnte mir bitte jemand helfen? Ich bin auf der Suche nach einer Möglichkeit zum Duplexdruck, ohne eine Textdatei zu lesen. Anstelle des Textdateilesers benötige ich die Steuerelemente auf den gedruckten Formularen. Jedes Formular verfügt über genügend Steuerelemente, um die Seiten vollständig zu füllen. Die Steuerelemente sind Bitmaps von Diagrammen und Gruppenfeldern, aber auch Textfelder und Beschriftungen. –
Immer noch nicht die Lösung für mein Problem gefunden. Wer könnte mir helfen? –