Autor Beitrag
Tobias L
Hält's aus hier
Beiträge: 6

Win XP

BeitragVerfasst: Sa 13.01.07 23:14 
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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Tobias L Threadstarter
Hält's aus hier
Beiträge: 6

Win XP

BeitragVerfasst: So 14.01.07 20:24 
Ich hab das PrintPage-Event folgender Maßen in meinem Quellcode:

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Tobias L Threadstarter
Hält's aus hier
Beiträge: 6

Win XP

BeitragVerfasst: 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:

ausblenden 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, 3040new 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 14.01.07 23:16 
Hallo!

aPrintFont ist vom Typ Font. Eine Instanz davon erstellst Du z.B. so:
ausblenden 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 15.01.07 10:56 
Hallo,

falls Du in erster Linie an einem ScreenShot interessiert bist, kann ich Dich auf meine Klasse FormPrint hinweisen.

Gruß Jürgen