Announcement

Collapse
No announcement yet.

RichTextBox ausdrucken

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • RichTextBox ausdrucken

    hallo alle zusammen,
    Ich hab da ein kleines Problem, Ich hab mir eine Form gebaut mit einer Toolbar und einer RichTextBox(RTB). Einer der Button in der Toolbar soll zum drucken des Textes aus der RTB sein.
    In Vb6 hab ich das gut hinbekommen aber wie kann ich den Text, der in der RTB steht, in .Net ausdrucken?

    Schon mal vielen Dank im Voraus.

    Matthias M

  • #2
    Hallo,

    der Weg führt über die im .NET Framework für das Drucken zuständige Klasse <b>PrintDocument</b>. Die Suche nach diesem Begriff listet hier im FORUM zahlreiche Beispiele auf.

    Wenn der Inhalt einer RichTextBox ausgedruckt werden soll, könnte das hantieren mit <b>PrintDocument</b> zum Beispiel so aussehen:

    Schritt 1: Das Programm ruft die Methode

    Schritt 2: Immer dann, wenn eine Seite gedruckt werden soll, löst .NET das Ereignis <b>PrintDocument.PagePrint</B> aus,wobei der Parameter vom Typ <i>PrintPageEventArgs</I> die Daten zum Drucker liefert. In einer Ereignisbehandlungsmethode müssen wird jetzt nur noch den Inhalt der RichTextBox übergeben.

    Im Ganzen könnte das etwa so aussehen:
    <pre>
    Imports System.Drawing.Printing
    <br>
    Public Class Form1
    Inherits System.Windows.Forms.Form
    <br>
    #Region " Windows Form Designer generated code "
    <br>
    ...
    <br>
    #End Region
    <br>
    Private iPageNum As Integer
    Private iOffset As Integer
    Private sData(100) As String
    Private iArraySize As Integer
    <br>
    Private Sub ButtonInsertText_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonInsertText.Click
    RichTextBox1.AppendText("Das ist die 1. Zeile" + Environment.NewLine)
    RichTextBox1.AppendText("Das ist die 2. Zeile" + Environment.NewLine)
    RichTextBox1.AppendText("Das ist die 3. Zeile")
    End Sub
    <br>
    ' Komponente PrintDocument von der ToolBox auf das Formular ziehen
    <br>
    Private Sub ButtonPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonPrint.Click
    PrintDocument1.Print()
    End Sub
    <br>
    Private Sub PrintDocument1_BeginPrint(ByVal sender As Object, _
    ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.BeginPrint
    ' Die Zeilen aus der RichTextBox in ein String-Array kopieren
    iArraySize = 0
    For Each sLine As String In RichTextBox1.Lines
    sData(iArraySize) = sLine
    iArraySize += 1
    Next
    End Sub
    <br>
    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, _
    ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    Dim iX As Single = e.MarginBounds.Left
    Dim iY As Single = e.MarginBounds.Top
    Dim aBrush As Brush = New SolidBrush(RichTextBox1.ForeColor)
    Dim iLineHeight As Single = RichTextBox1.Font.GetHeight(e.Graphics)
    iPageNum += 1
    While ((iY + iLineHeight) < e.MarginBounds.Bottom And iOffset < iArraySize)
    e.Graphics.DrawString(sData(iOffset), RichTextBox1.Font, aBrush, iX, iY)
    iOffset += 1
    iY += iLineHeight
    End While
    If iOffset < iArraySize Then
    e.HasMorePages = True
    End If
    End Sub
    End Class
    </pre>
    Wenn beim Ausdruck die Text-Formatierungen berücksichtigt werden sollen, wird es etwas komplizierter. Das folgende Beispiel zeigt den Alternativen Weg: <i>http://www.codeguru.com/Csharp/Csharp/cs_controls/richtext/article.php/c4781</i&gt

    Comment


    • #3
      vielen Dank,

      das Funzt 100%, aber da muß man erstmal drauf kommen.
      Ich hatte ja schon mit dem PrintDocument angefangen zu arbeiten aber ich habe immer nur leere Seiten raus bekommen.

      nochmal Danke

      cu Matthia

      Comment

      Working...
      X