ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
2111
2111
EMPFEHLEN
-
Hallo!
Ich habe einen Text, der über 2 Seiten geht, leider weiß ich aber nicht, wie ich im PrintDocument einen Seitenumbruch machen kann.
Hat jemand so etwas schon mal gemacht?
Vielen Dank im Voraus!
MfG
Jens
-
Hallo Jens!
Das Drucken unter .NET ist immer ein "Gebastel"....
Wenn das Dokument mehrere Seiten hat, kannst du das so festlegen (natürlich in der "PrintPage" - Methode)
Code :1 2 3
e.HasMorePages = true; // Sprunganweisung zum Neustarten von "printDocument1_PrintPage" return;
Damit wird die Methode ein wiederholt aufgerufen. Das kannst du z.B. in einer "for-Schleife" mit einer globalen Variable anwenden, so dass er beim nächsten Mal wieder am richtigen Ort weiterfährt...
Hast du alles auf Papier was du wolltest, kannst du die Druckseite so abschliessen:
Code :1
e.Cancel = true;
So einfach wie möglich. Aber nicht einfacher!
Albert Einstein
-
Hallo!
Vielen Dank schon mal für die Antwort!
Leider funktioniert das Ganze noch nicht bei mir...
Ich habe mal meinen Code beigefügt:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
int i = 0; y = 100; foreach (ListViewItem item in this.lvwFigures.Items) { if (i == 20) { // Seitenumbruch einfügen e.HasMorePages = true; return; } e.Graphics.DrawString(item.SubItems[0].Text, new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 150, y + 100); i++; }
Ich hole mir die Daten aus einem ListView, und möchte jeweils 20 Zeilen auf einer Seite ausgeben und anschließend einen Seitenwechsel machen, und die nächsten 20 Zeilen ausgeben...
Ich würde mich freuen, wenn du mir behilflich sein könntest!
MfG
Jens
-
Hallo Jens!
Sorry dass es so lange gedauert hat! Bei
wird die Printpage erneut aufgerufen. Das heisst deine Zählvariable wird wieder auf null gesetzt und mit der foreach - Schleife wieder von vorne begonnen; und das ganze wiederholt sich bis zum Absturz....Code :1 2
e.HasMorePages = true; return;
Ich würde das so umschreiben:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
int i; private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { int y = 100; int k = i; while (i == listView1.Items.Count) { e.Graphics.DrawString(listView1.Items[i].SubItems[0].Text, new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 150, y + 100); if (i == k+20) { e.HasMorePages = true; return; } } }So einfach wie möglich. Aber nicht einfacher!
Albert Einstein
Ähnliche Themen
-
[C#] PrintDocument Problem
Von ihkawiss im Forum .NET Application und Service DesignAntworten: 3Letzter Beitrag: 05.09.10, 15:09 -
printDocument String "Größe" ermitteln ?
Von MFC openGL im Forum .NET Application und Service DesignAntworten: 4Letzter Beitrag: 11.01.06, 14:47 -
PrintDocument
Von pakko im Forum .NET ArchivAntworten: 0Letzter Beitrag: 11.05.05, 14:57 -
PrintDocument
Von ut1999 im Forum .NET ArchivAntworten: 0Letzter Beitrag: 28.02.05, 14:57 -
Seitenumbruch
Von markushain im Forum PHPAntworten: 2Letzter Beitrag: 11.08.04, 21:26





Zitieren
Login





