Der einfachste Weg, eine Kopf- und Fußzeile auf eine Printing.PrintDocument (Net 2.0) hinzufügen?

StackOverflow https://stackoverflow.com/questions/59213

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!

War es hilfreich?

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 zeichnen

http://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)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top