[VB2010 EXPRESS] Probleme beim mehrfachen Aufruf der Druckroutine

11/08/2010 - 15:14 von Rüdiger Bente | Report spam
Hallo,

ich habe folgendes Problem:

Ich lese nach Drücken eines Buttons ein XML-File ein und aufgrund der
Daten in dem XML-File wird der Druckprozess gesteuert, soll heißen, in
dem XML-File steht z.B. <LINE x="5" y="10" length="100" /> und das soll
dann eine Linie zu Papier bringen entsprechend der o.g. Koordinaten.
Das klappt auch ganz vorzüglich beim ersten Drücken des Buttons. Auch
mehrseitige Ausdrucke funktionieren. Aber wenn ich das XML-File jetzt
àndere und wieder den Button drücke, dann bleibt das alte erhalten und
das neue wird darüber gedruckt. Wenn ich das Programm neu starte, ist
das Problem nicht mehr vorhanden.

Hier die Routinen auf das Wesentliche verkürzt dargestellt:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
..
'es folgt das Einlesen des XML-Files


' pd ist PrintDocument
pd.DefaultPageSettings.Landscape = True
pd.DefaultPageSettings.PaperSize = New
System.Drawing.Printing.PaperSize("PaperA4", 826, 1169)
Dim margins As New Margins(0, 0, 0, 0)
pd.DefaultPageSettings.Margins = margins
pd.Print()
pd.Dispose() 'bringt auch nichts
End Sub

Private Sub pd_PrintPage(ByVal sender As Object, ByVal e As
System.Drawing.Printing.PrintPageEventArgs) Handles pd.PrintPage


e.Graphics.PageUnit = GraphicsUnit.Document
'das sollte den Grafikbuffer doch eigentlich löschen???
e.Graphics.Clear(Color.White)

'bringt auch nichts, aber wenn ich eine andere Farbe nehme, wird das
wohl benutzt, der erste Druck bleibt weiter vorhanden
e.Graphics.DrawRectangle(Pens.White, 0, 0, Zoll(DINA4Breite),
Zoll(DINA4Hoehe))

..
Case 1 'LINE
e.Graphics.DrawLine(MyPen, Zoll(MyTemplate(i).X),
Zoll(MyTemplate(i).Y), Zoll(MyTemplate(i).X + MyTemplate(i).Length),
Zoll(MyTemplate(i).Y))
.

If Seite = 0 Then
e.HasMorePages = False
Else
e.HasMorePages = True
e.Graphics.Dispose() ' aus lauter Verzweifelung, nutzt
aber auch nicht
End If
End Sub


Hat da irgendjemand eine Idee?

Viele Grüße,
Rüdiger
 

Lesen sie die antworten

#1 Thomas Scheidegger
11/08/2010 - 15:32 | Warnen spam
Hallo Rüdiger

'es folgt das Einlesen des XML-Files ...
Case 1 'LINE
e.Graphics.DrawLine(MyPen, Zoll(MyTemplate(i).X)



wie kommen die Daten vom XML in jenes 'MyTemplate'?
Wird 'MyTemplate' geleert, etwa vor dem lesen eines neuen XML?


Thomas Scheidegger - 'NETMaster'
http://dnetmaster.net/

Ähnliche fragen