Entwickler-Ecke
WinForms - Drucken von Text aus verschiedenen Elementen
Tobias L - Sa 13.01.07 23:14
Titel: Drucken von Text aus verschiedenen Elementen
Hey.
Ich hab schon einiges in C# programmiert, aber jetzt weiß ich einfach nich mehr weiter.
Ich hab in meiner Form verschiedene Elemente wo Text reingeschrieben weden kann, eine Textbox, ein ListViewElement und ein RichTextBox Element. Der Text soll dann zusammenhängend gedruckt werden.
Meine Frage: Wie bekomm ich ein Druckbefehl raus? Das Dialogfeld mit den Druckereinstellung konnte ich schon öffnen, mit dem Befehl printDialog.ShowDialog(); aber wenn ich dann auf Drucken geklickt hab, passierte gar nichts.
Kann mir da jemand Helfen?
Danke schon im voraus.
Tobias
Christian S. - Sa 13.01.07 23:21
Hallo!
Drucken tust Du mit dem PrintDocument. Das startest Du, indem Du die Print-Methode des PrintDocumentsaufrufst.
Die eigentliche Ausgabe erledigst Du im PrintPage-Event des PrintDocuments: Das hat einen PrintPageEventArgs-Parameter (Name wie immer "e"), der ein entsprechendes Graphics-Objekt hat, auf welches Du zeichnen kannst. Wichtig: Sollen weitere Seiten gedruckt werden, musst Du e.HasMorePages auf true setzen.
Grüße
Christian
Tobias L - So 14.01.07 20:24
Ich hab das PrintPage-Event folgender Maßen in meinem Quellcode:
C#-Quelltext
1: 2: 3: 4:
| private void prtRezept_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { } |
Da kommt ja bestimmt das Graphics-Objekt rein, aber wie kann ich nun die drei string-Variablen rein bekommen? So wie ich das verstanden hab, muss ich jetzt das Graphics-Objekt aufrufen und dann bestimmen, was gedruckt werden soll (in meinem Fall die Zeichenketten aus den drei Elementen). Jetzt weiß ich aber nicht wie ich das bestimmen soll?
Kannst du mir da noch mal helfen?
Tobias
Christian S. - So 14.01.07 20:34
Hallo!
Die Zeichenketten wirst Du irgendwo so ablegen müssen, dass Du auf sie von dem Event aus zugreifen kannst (also als privates Feld oder so).
Eine solche Zeichenkette ausgeben kannst Du dann in dem Event mit e.Graphics.DrawString(aText, aPrintFont, Brushes.Black, xPos, yPos, new StringFormat());
Grüße
Christian
Tobias L - So 14.01.07 23:07
Erstmal Vielen Dank für die letzte Antwort, hat mir sehr geholfen. Ich bin nämlich noch anfänger. Jetzt komm ich aber trotzdem nicht weiter bei der Schrift. Ich hab zuerstmal folgenden Code geschrieben:
C#-Quelltext
1: 2: 3: 4:
| private void prtRezept_PrintPage_1(object sender, System.Drawing.Printing.PrintPageEventArgs e) { e.Graphics.DrawString(html_var.titel, FontFamily.GetFamilies(FontStyle.Bold), Brushes.Black, 30, 40, new StringFormat()); } |
Ich hoffe ich hab das bis hierhin erstmal richtig gemacht. Jetzt komm ich aber da nicht weiter, wo ich erstmal FontFamily.GetFamilies(FontStyle.Bold) hingeschrieben hab. Was hab ich da verkehrt gemacht?
Übrigens die Werte nach der Schriftfarbe (bei mir 30 und 40) geben doch bestimmt die Anfangsposition auf dem gedruckten Blatt in Pixel an, richtig?
Grüße
Tobias
Christian S. - So 14.01.07 23:16
Hallo!
aPrintFont ist vom Typ
Font. Eine Instanz davon erstellst Du z.B. so:
C#-Quelltext
1:
| aPrintFont := new Font("Arial", 10); |
Du solltest Dir angewöhnen, bei Unklarheiten zuerst einmal die Doku zur entsprechenden Klasse / Methode anzusehen, die ist meist sehr gut! :-) Damit kannst Du Dir auch die Frage beantworten, was die Zahlen bedeuten :zwinker:
Grüße
Christian
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!