Inhalt einer RichTextBox ausdrucken

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Quadsoft.de.vu.

    Inhalt einer RichTextBox ausdrucken

    Hallo zusammen.

    Ich bin absoluter Neuling, hab also nicht so viel Ahnung von Visual Basic...

    Ich will von einer RichTextBox den Text mit nem PrintDialog drucken (Text, Textgröße, Schriftart, Hintergrundfarbe und Textfarbe).


    ;( Ich hab auch schon in anderen Themen gesucht und hab einige Codebeispiele kopiert, s ging nich so wirklich... ;(







    TextEditor: 99%
    Ich mach' es bei meinem neuen WritePad so, dass ich jedes Zeichen mit dem Index auslese und die Position des Zeichens mit "GetPositionByCharIndex" (So oder so ähnlich) auslese. Das Zeichne ich anschließend zeichenweise auf das PrintDocument.
    Mit der standard-RichTextBox sind glaube ich nur Schwarz/Weiss-Drucke möglich...

    Ich habe aber auf vb@rchiv mal einen Tipp gefunden, bei dem ein neues Control, welches von der RTB erbt, erstellt wird und welches auch die Möglichkeit hat, farbige Dokumente an den Drucker zu senden. TIPP


    Grüsse
    Pascal
    Danke an alle!
    Ich habe schon in Foren gestöbert und diesen Beispielcode gefunden, der auch halbwegs funktionierte (bezüglich des Farbdruckens):

    VB.NET-Quellcode

    1. Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    2. e.Graphics.DrawString(RichTextBox1.Text, New Font("Calibri", 10, FontStyle.Regular, GraphicsUnit.Point), Brushes.Black, 10, 10)
    3. End Sub


    Ich habe auch versucht,
    a) die Farbe (RichTextBox1.ForeColor anstatt Brushes.Black) der RichTextBox beim Drucken zu übernehmen, da kommt dann aber eine lange Fehlermeldung...
    b) die Schriftart, -größe und -effekte (Fett, Kursiv, Unterstrichen usw.) (FontDialog1.Font anstatt "Calibri", 10, FontStyle.Reqular, GraphicsUnit.Point) der RichTextBox beim Drucken zu übernehmen, da kommt auch ne Fehlermeldung...

    Könnt ihr dazu noch was sagen?


    TextEditor: 99%
    THX AN ALLE

    Also ich hab jetzt noch mal den Code etwas abgeändert und einige Probleme selbst gelöst (Schriftart und -farbe werden jetzt übernommen), allerdings wird beim Probedruck das gedruckte immer durchgestrichen:


    VB.NET-Quellcode

    1. Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    2. e.Graphics.DrawString(RichTextBox1.Text, New Font(FontDialog1.Font, RichTextBox1.Font.Size), New SolidBrush(RichTextBox1.ForeColor), 10, 10)
    3. End Sub


    Daraufhin habe ich diesen Code kreiert, da beim Testdruck auch kein fetter und/oder kursiver Text gedruckt wird:

    VB.NET-Quellcode

    1. Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    2. e.Graphics.DrawString(RichTextBox1.Text, New Font(FontDialog1.Font, RichTextBox1.Font.Size, New FontStyle(FontDialog1)), New SolidBrush(RichTextBox1.ForeColor), 10, 10)
    3. End Sub



    Bei New FontStyle(FontDialog1) kommt aber diese Fehlermeldung : Der Typ "System.Drawing.FontStyle" hat keinen Konstruktor.

    Da ich noch neu bin kann ich mit dem Ausdruck "Konstruktor" nich viel anfangen...

    Ich plane auch ein Tutorial rund um die RichTextBox zu schreiben.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cronoxyd“ ()

    Hi jvbsl!
    Ich hab jetzt auch das New Font weggelassen:

    VB.NET-Quellcode

    1. Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    2. e.Graphics.DrawString(RichTextBox1.Text, (FontDialog1.Font), RichTextBox1.Font.Size, New SolidBrush(RichTextBox1.ForeColor), 10, 10)
    3. End Sub


    Dann kommen aber diese Fehlermeldungen:
    a) Der Wert vom Typ "Single" kann nicht in "System.Drawing.Brush" konvertiert werden.
    Makiert

    VB.NET-Quellcode

    1. (RichTextBox1.Font.Size)


    b) Der Wert vom Typ "System.Drawing.SolidBrush" kann nicht in "Single" konvertiert werden.
    Markiert

    VB.NET-Quellcode

    1. New SolidBrush(RichTextBox1.ForeColor)


    c) Der Wert vom Typ "Integer" kann nicht in "System.Drawing.StringFormat" konvertiert werden.
    Markiert

    VB.NET-Quellcode

    1. 10

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cronoxyd“ ()

    VB.NET-Quellcode

    1. e.Graphics.DrawString(RichTextBox1.Text, (FontDialog1.Font), New SolidBrush(RichTextBox1.ForeColor), 10, 10)

    also einfacher kann ichs dir nicht machen...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Kleiner Tipp: Achte mal auch auf das, was es im IntelliSense-Fenster an Auswahlmöglichkeiten gibt. Da hättest du auch gemerkt, dass es eine Überladung der Methode gibt, die nur Font und nicht Font und FontSize akzeptiert.