Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Es ist üblich, dass Windows-basierte Anwendungen Text drucken. Die Graphics Klasse stellt Methoden zum Zeichnen von Objekten (Grafiken oder Text) auf einem Gerät bereit, z. B. einem Bildschirm oder Drucker. Im folgenden Abschnitt wird der Prozess zum Drucken der Textdatei ausführlich beschrieben. Diese Methode unterstützt nicht das Drucken von nicht reinen Textdateien, wie zum Beispiel ein Word-Dokument oder eine PDF-Datei.
Hinweis
Die DrawText Methoden von TextRenderer werden nicht für das Drucken unterstützt. Sie sollten zu druckenden Text stets mit den DrawString-Methoden von Graphics zeichnen (siehe folgendes Codebeispiel).
So drucken Sie Text
Doppelklicken Sie in Visual Studio im Projektmappen-Explorer auf das Formular, aus dem Sie drucken möchten. Diese Aktion öffnet den Visual Designer.
Doppelklicken Sie in der Toolbox auf die PrintDocument Komponente, um sie dem Formular hinzuzufügen. Mit dieser Aktion wird eine
PrintDocument
Komponente mit dem NamenprintDocument1
erstellt.Fügen Sie entweder ein
Button
zum Formular hinzu oder verwenden Sie eine Schaltfläche, die sich bereits im Formular befindet.Wählen Sie im Visual Designer des Formulars die Schaltfläche aus. Wählen Sie im Eigenschaftenbereich die Schaltfläche " Ereignisfilter " aus, und doppelklicken Sie dann auf das
Click
Ereignis, um einen Ereignishandler zu generieren.Der
Click
Ereigniscode sollte sichtbar sein. Fügen Sie außerhalb des Ereignishandlers eine private Zeichenfolgenvariable zu der Klasse mit dem NamenstringToPrint
hinzu.private string stringToPrint="";
'Private PrintDocument1 As New PrintDocument() Private stringToPrint As String
Setzen Sie im
Click
-Ereignishandlercode die DocumentName-Eigenschaft auf den Namen des Dokuments zurück. Diese Informationen werden an den Drucker gesendet. Lesen Sie als Nächstes den Dokumenttextinhalt, und speichern Sie ihn in derstringToPrint
Zeichenfolge. Rufen Sie schließlich die Print Methode auf, um das PrintPage Ereignis auszuheben. DiePrint
Methode ist im folgenden Code hervorgehoben:private void button1_Click(object sender, EventArgs e) { string docName = "testPage.txt"; string docPath = @"C:\"; string fullPath = System.IO.Path.Combine(docPath, docName); printDocument1.DocumentName = docName; stringToPrint = System.IO.File.ReadAllText(fullPath); printDocument1.Print(); }
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim docName As String = "testPage.txt" Dim docPath As String = "C:\" Dim fullPath As String = System.IO.Path.Combine(docPath, docName) PrintDocument1.DocumentName = docName stringToPrint = System.IO.File.ReadAllText(fullPath) PrintDocument1.Print() End Sub
Wechseln Sie zurück zum Visual Designer des Formulars, und wählen Sie die
PrintDocument
Komponente aus. Wählen Sie im Eigenschaftenbereich den Ereignisfilter aus, und doppelklicken Sie dann auf dasPrintPage
Ereignis, um einen Ereignishandler zu generieren.Verwenden Sie im PrintPage-Ereignishandler die Graphics-Eigenschaft der PrintPageEventArgs-Klasse und den Dokumentinhalt, um die Zeilenlänge und die Zeilenanzahl pro Seite zu berechnen. Überprüfen Sie nach dem Zeichnen jeder Seite, ob es sich um die letzte Seite handelt, und legen Sie die Eigenschaft von HasMorePages der
PrintPageEventArgs
entsprechend fest. DasPrintPage
-Ereignis wird solange ausgelöst, bisHasMorePages
den Wertfalse
hat.Im folgenden Codebeispiel wird der Ereignishandler verwendet, um den Inhalt der Datei "testPage.txt" in derselben Schriftart zu drucken, wie sie im Formular verwendet wird.
private void PrintDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { int charactersOnPage = 0; int linesPerPage = 0; // Sets the value of charactersOnPage to the number of characters // of stringToPrint that will fit within the bounds of the page. e.Graphics.MeasureString(stringToPrint, this.Font, e.MarginBounds.Size, StringFormat.GenericTypographic, out charactersOnPage, out linesPerPage); // Draws the string within the bounds of the page e.Graphics.DrawString(stringToPrint, this.Font, Brushes.Black, e.MarginBounds, StringFormat.GenericTypographic); // Remove the portion of the string that has been printed. stringToPrint = stringToPrint.Substring(charactersOnPage); // Check to see if more pages are to be printed. e.HasMorePages = (stringToPrint.Length > 0); }
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim charactersOnPage As Integer = 0 Dim linesPerPage As Integer = 0 ' Sets the value of charactersOnPage to the number of characters ' of stringToPrint that will fit within the bounds of the page. e.Graphics.MeasureString(stringToPrint, Me.Font, e.MarginBounds.Size, StringFormat.GenericTypographic, charactersOnPage, linesPerPage) ' Draws the string within the bounds of the page e.Graphics.DrawString(stringToPrint, Me.Font, Brushes.Black, e.MarginBounds, StringFormat.GenericTypographic) ' Remove the portion of the string that has been printed. stringToPrint = stringToPrint.Substring(charactersOnPage) ' Check to see if more pages are to be printed. e.HasMorePages = stringToPrint.Length > 0 End Sub
Siehe auch
.NET Desktop feedback