WinFuture-Forum.de: C# Printpreviewdialog Problem [gelöst] - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

C# Printpreviewdialog Problem [gelöst] Er druckt nicht das was er soll


#1 Mitglied ist offline   karl0 

  • Gruppe: aktive Mitglieder
  • Beiträge: 386
  • Beigetreten: 25. März 06
  • Reputation: 4

geschrieben 20. August 2009 - 19:39

Hi all ich habe mal wieder nen Problem.
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 :D
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

Du bist die Nr. 1 - BLUE!!
0

Anzeige



Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0