Richtextbox auslesen und in Druckvorschau ausgeben

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Richtextbox auslesen und in Druckvorschau ausgeben

    Hallo zusammen,

    ich möchte einen Text aus einer Richtextbox auslesen und dann in einer Druckvorschau wieder ausgeben. Den Inhalt möchte ich in die Variable TextInhalt speichern. Diese möchte ich dann wiederrum in einer Druckvorschau ausgeben. Kann mir jemand sagen, ob meine Methode Auslesen soweit korrekt ist, und wie ich den TextInhalt in meine Druckvorschau übergeben kann?


    PrivateSub Auslesen(ByVal sender AsObject, ByVal e AsPrintPageEventArgs)
    Dim i AsIntegerFor i = 0 To RichtextBox.Lines.GetUpperBound(0)
    If i = TextInhalt.GetUpperBound(0) ThenReDimPreserve TextInhalt(Textinhalt.GetUpperBound(0) + 10)
    EndIf
    TextInhalt(i) = RichtextBox.Lines(i)
    i += 1
    Next
    EndSub

    Vielen Dank.
    mfg
    Tommy
    Zunächst mal verwende den VB Tag im Editor.

    Für dein Problem gibts sogar ein Control: PrintPreview-Control
    Kannst oben in der Suchleiste auch mal Drucken oder Druckvoschau eingeben. ;)

    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(texte, New Font("Arial", 11, FontStyle.Regular), Brushes.Black, 10, 70)
    3. PrintPreviewControl1.Document = PrintDocument1
    4. End Sub


    Zum Drucken:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. PrintDialog1.ShowDialog()
    3. PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
    4. PrintDocument1.Print()
    5. End Sub

    8-) faxe1008 8-)

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

    Dann probiers mal so ;)

    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("dsghsadmasdb", New Font("Arial", 11, FontStyle.Regular), Brushes.Black, 10, 70)
    3. End Sub
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. PrintPreviewControl1.Document = PrintDocument1
    6. End Sub

    8-) faxe1008 8-)

    thomas-k-ffm schrieb:

    Aber leider ist meine Vorschau leer
    Vielleicht so:
    Form, Button, PrintDocument, PrintPreviewDialog
    Dies im Designer: PrintPreviewDialog1.Document = PrintDocument1, der Rest hier und feddich:
    PrintPage

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    3. Me.PrintPreviewDialog1.ShowDialog()
    4. End Sub
    5. Private Sub PrintDocument1_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    6. e.Graphics.DrawString("PrintPage", New Font("Arial", 20), Brushes.Black, 30, 30)
    7. End Sub
    8. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke für die vielen Antworten. Leider habe ich immer noch einen Fehler drin. Ich habe mich mal an RodFromGermany orientiert. Ich habe ein Form, einen Button, ein Printdocument und einen PrintPreviewDialog. Beim PrintPreviewDialog habe ich als Document das Printdocument1 ausgewählt. Leider habe ich immer noch eine leere Druckvorschau. Muss ich dem Printdocument noch meine Textbox zuweisen, und wenn ja wie?

    Ich stelle mittlerweile fest, dass man mehr im Designer machen kann als ich dachte. Das spart einiges an Programmierarbeit :D

    Frohe Ostern!!!!

    thomas-k-ffm schrieb:

    Ich habe mich mal an RodFromGermany orientiert.
    Wie genau ist der Unterschied von Deinem Code zu meinem Code?
    Wo bei mir

    VB.NET-Quellcode

    1. e.Graphics.DrawString("PrintPage", New Font("Arial", 20), Brushes.Black, 30, 30)
    steht, musst Du den String "PrintPage" durch Deinen auszugebenden Text ersetzen:

    VB.NET-Quellcode

    1. e.Graphics.DrawString(TextBox1.Text, New Font("Arial", 20), Brushes.Black, 30, 30)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    thomas-k-ffm schrieb:

    Ich habe jetzt eine Fehlermeldung die mir sagt:
    In welcher Prozedur?
    jedenfalls nicht bei

    VB.NET-Quellcode

    1. Private Sub PrintDocument1_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Da hast Du aber wesentliche Grundlagen nicht verstanden.
    Das Drucken ist äquivalent zum Malen im Paint-Event, und im e-Parameter bekommst Du Zugriff auf das richtige Graphics-Objekt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Puh, ich befürchte da muss ich mich nochmal genauer einlesen. Ich habe kein eigentliches Paint-Event. Ich wollte so die Textbox einlesen und es dann in einer Seitenansicht ausgeben, bevor gedruckt wird.....

    Private Sub Einlesen(ByVal sender As Object, ByVal e As PrintPageEventArgs) Handles Druckdokument.PrintPage
    Dim i As Integer
    For i = 0 To Richtextbox.Lines.GetUpperBound(0)
    If i = Textinhalt.GetUpperBound(0) Then
    ReDim Preserve Textinhalt(Textinhalt.GetUpperBound(0) + 10)
    End If
    Textinhalt(i) = Richtextbox.Lines(i)
    i += 1
    Next
    End Sub

    thomas-k-ffm schrieb:

    Handles Druckdokument.PrintPage
    Genau das ist es, das "Paint-Event".
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!