DOBON.NET DOBON.NETプログラミング掲示板過去ログ

印刷時の改ページが正しく行なわれない・・・。

分類:[.NET]

皆さま。お疲れ様です。
印刷の時の改ページについて教えて頂きたいのですが、

Private Sub pd_PrintPage(ByVal sender As Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Dim w_FunctionName As String '関数名
Dim w_CurrentX1 As Short 'X座標
Dim w_CurrentY As Short 'Y座標
Dim printfont As Font 'フォント

Static wkcnt As Long 'カウント

w_FunctionName = "pd_PrintPage"

If (wkcnt = Nothing) Then
wkcnt = 0
End If

For wkcnt = wkcnt To PrintCnt - 1

'文字列を描画します。
If (PrintData(wkcnt).prTask = PRINT_TASK.PRINT_STRING) Then

'座標設定
w_CurrentX1 = VB6.TwipsToPixelsX(PrintData(wkcnt).prCurrentX1)
w_CurrentY = VB6.TwipsToPixelsY(PrintData(wkcnt).prCurrentY)

'文字列を描画する。
e.Graphics.DrawString(PrintData(wkcnt).prString, _
printfont, _
Brushes.Black, _
w_CurrentX1, _
w_CurrentY, _
New StringFormat)

ElseIf (PrintData(wkcnt).prTask = PRINT_TASK.PRINT_NEWPAGE) Then

'改ページを行なう
e.HasMorePages = True
Exit For

Else

'何も行なわない
Exit Sub

End If

Next

''印刷物がないならページの終了を通知する。
If (wkcnt = PrintCnt) Then

'現ページで終了
e.HasMorePages = False

'カウントを初期化する。
wkcnt = Nothing
Else
'次データをカウントアップする。
wkcnt = wkcnt + 1
End If

'関数を終了する。
Exit Sub
End Sub

ボタンが押されるたびにデータを取得して、印刷する
作りにしているのですが、初回だけうまく改ページ
処理をおこなってくれるのですが、2回目以降になると、
改ページされずに、改ページ以降のデータが
すべて初期ページに印字されます。

デバッグで追ってみたのですが、

 '現ページで終了
 e.HasMorePages = False

で印刷が終了するはずなのに、再びPrintPageイベントが発生して、
「現在のソースコードの位置が表示できません」っていう
メッセージが出たりします。
なんらかのエラーがでているとはおもうのですが、つかめません。

同じような経験をされた方や対処方法を知っておられる方
助けてください。お願いします。

P.S
印刷終了後、使い終わったオブジェクトをしっかり
開放していないのが原因なのでしょうか・・・。
お騒がせしました。
解決しました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板