Es geht um das beliebte Thema "Drucken" im .NET
Zu drucken habe ich 3 Seiten.
Diese 3 Seiten werden per "zeichnung" erstellt.
Ich übergebe hier 3 Variabeln
start = 1; //Erste Seite die gedruckt wird ende = 3; //Letzte Seite die gedruckt wird anzahl = 3; //Wieviele Seiten gedruckt werden
Anzahl schicke ich mit, für die Seitennummer.
Es kann entweder alles gedruckt werden. Die ersten beiden Seiten oder die Letzte Seite.
Hier werden die Seiten erstellt.
private void PrintImage(object o, PrintPageEventArgs e) { [...] switch(start) { //----------------------------Seite 1 (Calculation 1) case 1: [...] break; //----------------------------Seite 2 (Calculation 2) case 2: [...] break; //----------------------------Seite 3 (Simulation) case 3: [...] break; } [...] e.Graphics.DrawString( i + " / " + anzahl, printFont, printBrush, 650, 1100); e.HasMorePages = (start < ende); i++; start++; }
So, wenn ich die Seiten (wie oben) erstelle werden die korrekt gedruckt
printDocument1.PrintPage += new PrintPageEventHandler(PrintImage); printDocument1.Print();
Wenn ich die Seiten mit dem printPreviewDialog wie folgt öffne.
case "preview": start = 1; ende = 3; anzahl = 3; printDocument1.PrintPage += new PrintPageEventHandler(PrintImage); printPreviewDialog1.ShowDialog(); break;
Werden alle 3 Seiten auch Korrekt angezeigt.
Klicke ich jetzt aber in dem Dialog auf drucken. (Der Button oben) passiert was ganz komisches
Er druckt nur eine fast leere Seite wo unten nur steht
Zitat
Seite 4 / 3
Er zeigt die Seiten also korrekt an, Druckt aber eine Seite, welche vorher nicht da war.
Ich fand das komisch, also habe ich bei der Seitenerstellung was im switch geändert.
default: start = 0; i = 0; break;
Da der Dialog ja irgendwie zusätzlich einmal die PrintImage Methode aufruft kommt er in den default case, setzt alles zurück und jetzt druckt er folgendes
Leere Seite (0 / 3)
normale Seite 1
normale Seite 2
normale Seite 3
wie bekomme ich diese erste leere weg, bzw wie bekomme ich den Dialog dazu, einfach das zu drucken, was er mir auch anzeigt?
ich hoffe es war etwas verständlich :-[ bei der Hitze kann man voll schlecht schreiben
MfG Karl0
EDIT: Okay das Problem ist leider unschön gelöst. Ich habe einfach die Seite 1 in den default geschrieben und die beiden Variablen "start" und "i" wieder auf 1 gesetzt. Nun macht er das, was er soll.
Aber warum er nur bei diesem Dialog so schwierigkeiten macht, keine ahnung
Dieser Beitrag wurde von karl0 bearbeitet: 21. August 2009 - 07:43