2

Hasmorepages PrintPageEventArgs プロパティとは何か、なぜそれを使用するのか、どのように機能するのかを理解しようとしています。

MSDN ライブラリには、適切な説明がありません。彼らが言うのは、trueに設定すると、printpageイベントが再度呼び出されるということだけです。それは、イベントが終了せずにループすること、または終了して再度自分自身を呼び出すこと、または printpage イベントを再度呼び出すことに依存していることを意味しますか?

PrintPageEventArgs.hasmorepages プロパティを理解しようとしています。ヒントやヘルプをいただければ幸いです。

ありがとうございました、

4

2 に答える 2

4

これは PrintDocument のプロパティではなく、PrintPageEventArgs のプロパティです。PrintPage イベント ハンドラーに渡されるインスタンス。

PrintController クラスと PrintDocument クラスの動作は、Windows での印刷の実装方法に大きく影響されます。核となる実装の詳細は、ページベースであることです。プリンター ドライバーは一度に 1 ページを処理します。基になる winapi 関数は StartPage() です。印刷デバイス コンテキストにレンダリングされるものはすべて、最終的に 1 ページになります。次に、EndPage() winapi 関数がページを完成させ、それをスプーラーに送信します。

3 ページのドキュメントが印刷されている間に行われる呼び出しを図解すると役立つ場合があります。

StartDoc()
    PrintDocument.BeginPrint event
    StartPage()
       PrintDocument.PrintPage event, e.HasMorePages = true
    EndPage()
    StartPage()
       PrintDocument.PrintPage event, e.HasMorePages = true
    EndPage()
    StartPage()
       PrintDocument.PrintPage event, e.HasMorePages = false
    EndPage()
    PrintDocument.EndPrint event
EndDoc()

e.HasMorePage = true を割り当てることで、PrintController が PrintPage イベントを発生させ続けることができるようになりました。PrintPage イベント ハンドラーでドキュメントのページ付けを行い、正しいページのコンテンツをレンダリングするのはユーザー次第です。たとえば、内部ページ カウンターを 0 に設定するには、BeginPrint イベントが必要です。

于 2012-07-18T17:00:01.113 に答える
2

HasMorePagesPrintPageEventArgsイベントのパラメータとして受け取るのブール型プロパティです。印刷するページがさらにある場合、または現在のページが最後のページである場合は、現在のTrueページを印刷した後に設定します。False

イベントは常にフレームワーク内の何かによって呼び出され、直接呼び出されることは想定されていません。これらはイベントです。つまり、何かが発生したことを通知し、応答または反応する機会を与えるために送信されます。

に設定するとTruePrintPageイベントは自動的に再度呼び出されます。あなたはそれを自分で呼んでいません。(これはまさに MSDN のドキュメントに書かれていることです: If you set it to true, the printpage event is called again .もう一度呼び出す必要があるとは言いません。 is called againと書かれています。)

ev.HasMorePages := DoYouHaveMorePagesToPrint;

イベントの VB.NET の例と使用方法については、PrintDocument の MSDN ドキュメントを参照してev.HasMorePagesください。の情報については、この MSDN ページを参照してください。このページには、PrintPageEventArgs のメンバー(を含む)へのリンクがあります。PrintPageEventArgsHasMorePages

于 2012-07-18T16:18:11.430 に答える