Der einfachste Weg, eine Kopf- und Fußzeile auf eine Printing.PrintDocument (Net 2.0) hinzufügen?
-
09-06-2019 - |
Frage
Was ist der einfachste Weg, eine Kopf- und Fußzeile auf ein .Net Printdocument-Objekt hinzuzufügen, entweder pragmatisch oder zur Entwurfszeit?
Insbesondere versuche ich eine 3rd-Party-Grid-Control (Infragistics GridEx v4.3) zu drucken, das ein Printdocument-Objekt nimmt und zieht sich in sie.
Die resultierende Seite enthält nur das Raster und seinen Inhalt - aber ich möchte einen Header oder Titel hinzuzufügen, um den gedruckten Bericht zu identifizieren und möglicherweise eine Fußzeile zu zeigen, wer es gedruckt, wann und idealerweise eine Seitenzahl und Gesamtseitenzahl .
Ich verwende VB.Net 2.0.
Vielen Dank für Ihre Hilfe!
Lösung
Das Printdocument-Objekt löst das Ereignis für print jede Seite gedruckt werden.
: Sie können Text / Linien / etc in die Druckerwarteschlange mit dem PrintPageEventArgs Ereignisparameter zeichnenhttp://msdn.microsoft.com /en-us/library/system.drawing.printing.printdocument.aspx
Dim es Withevents, wenn Sie es an das Netz passieren, so können Sie das Ereignis behandeln.
Andere Tipps
Im Anschluss an Booji-boy 's Antwort, hier ist, was ich mit kam (was ich habe zum Beispiel Zwecke vereinfacht):
Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
Dim oDoc As New Printing.PrintDocument
oDoc.DefaultPageSettings.Landscape = True
AddHandler oDoc.PrintPage, AddressOf PrintPage
oDoc.DocumentName = "Printout"
InfragisticsWinGrid.PrintPreview(InfragisticsWinGrid.DisplayLayout, oDoc)
End If
End Sub
Private Sub PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
' Draw title
e.Graphics.DrawString("Report Title"), New Font("Arial", 16), Brushes.Black, 95, 70)
' Draw footer
e.Graphics.DrawImage(DirectCast(mResources.GetObject("footer_logo"), Drawing.Bitmap), 95, e.PageBounds.Height - 87)
Dim drawFont As New Font("Arial", 8.75)
e.Graphics.DrawString("Report Title", drawFont, Brushes.Gray, 190, e.PageBounds.Height - 90)
e.Graphics.DrawString("Printed", drawFont, Brushes.Gray, 190, e.PageBounds.Height - 76)
e.Graphics.DrawString("Printed By", drawFont, Brushes.Gray, 190, e.PageBounds.Height - 62)
' Draw some grid lines to add structure to the footer information
e.Graphics.DrawLine(Pens.Gray, 246, e.PageBounds.Height - 90, 246, e.PageBounds.Height - 48)
e.Graphics.DrawLine(Pens.Gray, 188, e.PageBounds.Height - 75, 550, e.PageBounds.Height - 75)
e.Graphics.DrawLine(Pens.Gray, 188, e.PageBounds.Height - 61, 550, e.PageBounds.Height - 61)
e.Graphics.DrawString("Report", drawFont, Brushes.Black, 250, e.PageBounds.Height - 90)
e.Graphics.DrawString(Date.Now.ToShortDateString & " " & Date.Now.ToShortTimeString, drawFont, Brushes.Black, 250, e.PageBounds.Height - 76)
e.Graphics.DrawString("Andrew", drawFont, Brushes.Black, 250, e.PageBounds.Height - 62)
End Sub
hatte ich mit den Werten von e.PageBounds.Height - x
spielen die gezeichneten Elemente zu erhalten bis Zeile.
Danke nochmal Booji Boy für den Zeiger - an dem ReportPage.Graphics bekommen () war genau das, was ich war nach: o)