So, nachdem die Hitze erstmal vorbei ist trau ich mich auch wieder an mein Laptop 🙂
Original von FZelle
Und selbst wenn er die Funktion aufruft, wird es "lustig".
Sollte tatsächlich mehr als eine Seite zu drucken sein, wird nämlich dann
gedruckt, bis das Papier alle ist.
Bei jedem betreten der Funktion wird von vorne gedruckt, und das
auch noch immer an die selbe Position.
Und Irgendwann wird auch der Speicher knapp, weil die Font-Handles nicht
Disposed werden.
Ich hab das Forum jetzt mehrmals durchsucht nach dem drucken mehrerer Seiten.
Ich bin heute leider nicht zur Lösung gekommen.
private void printDocument1_PrintPage(int seite, object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics g = e.Graphics;
float lineH = g.MeasureString("X", new Font("Verdana", 10, FontStyle.Regular)).Height;
int y = 100;
int z = 1;
for (int i = 0; i < listBox1.Items.Count; i++)
{
g.DrawString("(" + z + ") " + listBox1.Items[i].ToString(), new Font("Verdana", 10, FontStyle.Regular), Brushes.Black, 50, y);
y += (int)lineH;
if (y >= e.MarginBounds.Bottom)
{
e.HasMorePages = true;
return;
}
z++;
}
e.HasMorePages = false;
}
Ok, sind mehr als 1 Seite da tritt das e.HasMorePages = true; in kraft, die for Schleife wird neu begonnen und es gibt endlosseiten.
Das hab ich soweit verstanden.
Wie übergeb ich denn dann jetzt die aktuelle Stelle der Listboxeinträge an die printDocument1_PrintPage Funktion ?
Wenn ich diese übergabe habe dann brauch ich ja im Grunde nur die For-Schleife daran anpassen.
Das mit dem Dispose versuch ich jetzt mal in den Kopf zu bekommen.
Ich glaub ich werd mir doch mal endlich nen Buch dazu besorgen.