none
Rund ums Drucken

    Frage

  • Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            
    
            e.Graphics.DrawString(RichTextBox1.Text, New Font("Arial", RichTextBox1.Font.Size, FontStyle.Bold), Brushes.Black, 25, 25)
        End Sub
    

    Hallo,

    zum Thema Drucken findet man nicht so viel für Anfünger verwertbares wie ich es mit gewünscht hätte. Dennoch habe ich mit Hilfe eines Videos wenigstens mal meinen Drucker dazu gebracht, dass er druckt.

    Um  das ganze nun in geordnete Bahnen zu lenken, habe ich aber auch hier Fragen:
    Mein Test-Programm besteht aktuell aus einer RichTextBox1, einem MenuStrip für die Funktionen

    - Drucken (PrintDialog1)
    - Schriftart (FontDialog1)
    - Schriftfarbe (ColorDialog1)

    Schriftart- und Größe handle ich wie folgt:

    Schriftart so:

     Private Sub SchriftartToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SchriftartToolStripMenuItem.Click
            FontDialog1.ShowDialog()
            RichTextBox1.Font = FontDialog1.Font
        End Sub

    Schriftfarbe so:

       Private Sub SchriftfarbeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SchriftfarbeToolStripMenuItem.Click
            ColorDialog1.ShowDialog()
            RichTextBox1.ForeColor = ColorDialog1.Color
        End Sub
    

    Das Drucken wie folgt:

    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            
    
            e.Graphics.DrawString(RichTextBox1.Text, New Font("Arial", RichTextBox1.Font.Size, FontStyle.Bold), Brushes.Black, 25, 25)
        End Sub
    

    Wobei ich da natürlich auch gerne die Schriftart und FontStyle sowie die Schriftfarbe direkt aus der RichTextBox übernehmen würde.

    Beim PrintDialog verwende ich folgenden Code:

    Private Sub DruckenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DruckenToolStripMenuItem.Click
    
            If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
                PrintDocument1.Print()
            Else : End If
    
        End Sub
    

    Insgesamt habe ich beim Ausdruck also folgenden Probleme:
    1. Der Ausdruck erfolgt mit einer anderen Schriftart als ich über den FontDialog ausgwählt habe. Das das so ist, ist mir auch klar, ich haben ja explizit Arial angegeben. Wie stelle ich es an, dass beim Drucken die Schriftart gedruckt wird, die auch im RFT-Feld angezeigt wird?

    2. Das gleiche Problem habe ich natürlich mit FontStyle (hier Bold). Natürlich erwartet jeder, dass der Ausdruck der Darstellung am Bildschirm entspricht. Wie regle ich das, dass Schriftart und Schriftschnitt beim Druck übernommen werden.

    3. Womit wir dann bei der Farbe sind. Hier besteht das selbe Problem.

    4. Bislang macht mein RTF-Fenster zwar einen Zeilenumbruch wenn es erforderlich ist. Der Ausdruck erfolgt alledings in einer Zeile. SingleLine? Wie stelle ich es an, dass auch hier alles so läuft wie wir es kennen?

     


    Liebe Grüße Stefan

    Samstag, 27. März 2010 22:45

Antworten

Alle Antworten

  • Hallo Stefan,

    da bist Du an einem wunden Punkt angekommen.
    Denn eine RichTextBox verwendet intern RTF und erlaubt für jedes Zeichen
    eine andere Schriftart, Farbe und anderes mehr. Hinzukommen andere Dinge
    wie Einzüge, Nummerierungen usw.

    Dafür eine eigene Druckroutine zu schreiben wäre schon aufwändig.
    Deswegen nutzt man unter Windows Forms die Möglichkeiten des Windows API,
    siehe Den Inhalt eines RichTextBox-Steuerelements drucken
    ud dürfte basieren auf: Getting WYSIWYG Print Results from a .NET RichTextBox ,
    wo einige Hintergründe mehr erläutert werden.

    Andere Möglichkeiten wären das Nutzen von Word - wo RTF ursprünglich herstammt -;
    was aber eine Word Installation auf den Rechnern voraussetzen würde.

    Erst WPF kann es direkt: Gewusst wie: Speichern, Laden und Drucken von RichTextBox-Inhalt
    Dort gibt es aber eine wesentlich erweitertes Druckmodell .
    Und dies in eine Windows Forms Umgebung zu quetschen wäre ebenfalls aufwändig.

    Gruß Elmar

    • Als Antwort markiert Giftzwockel Sonntag, 28. März 2010 20:58
    Samstag, 27. März 2010 23:27
    Beantworter
  • Hallo Elmar,

    jetzt weiß ich auch, warum das Thema Drucken in Bücher für Anfänger diskret ausgeklammert wird.

    Es ist nichts für Anfänger. Eigentlich schade, da ja jeder irgendwann an den Punkt kommt und das, was er gezeichnet, berechnet oder geschrieben hat dokumentieren möchte. Die Links aus deiner Antwort werden mir einige Zeit und Energie abverlangen, bis ich da ggf. mal ein Stück weiter komme.

    Problematisch sind solche Links für mich auch, weil sie in oftmals C# oder C++ -Codes beinhalten. Die sind doch schon speziell.

    Bevor ich also die nächste Hürde in Angriff nehme, freue ich mich erst mal darüber, dass ich überhaupt schon mal einen Druckjob lostreten konnte.
    Danke.


    Liebe Grüße Stefan
    Sonntag, 28. März 2010 21:03
  • Hallo Stefan

    Ich habe auch das Problem mit dem Drucken bzw. der gedruckten Ausgabe von gespeicherten Daten.

    Mich würde sehr Dein Ergebnis interessieren. Genügend Zeit müßte ja jetzt vergangen sein.

    Thomas


    Es geht mir um WPF(XAML) Visual Studio Proff. 2010, VisualBasic, Win7 und verständliche Hilfe. Als Quelle nutze ich oft msdn Hilfe.
    Donnerstag, 27. Oktober 2011 08:42