投稿者 るきお  (社会人) 投稿日時 2013/11/8 19:25:39
まず、PrintDialogについてですが、
PrintDialogは立派な画面が簡単に出せて便利ですが、あの画面ははりぼてであって、
あそこで何を設定しても基本的には印刷するドキュメントの設定には何も影響がありません。

両面印刷であるとか、印刷するドキュメントの情報は自分でプログラムを使ってプリンタードライバーに設定する必要があります。

そのプログラムは難しく、意地悪です。
なぜなら、プリンタによってできることが違うからです。
残念ですが私にはやり方を案内することはできません。

次に、実際のPrintPageイベントによる印刷処理ですが、
このイベントは1ページに付き1回発生します。
2ページあるときはこのイベントが2回発生し、
1回目に1ページ目の内容を描画し、2回目に2ページ目の内容を描画する必要があります。

HasMorePageは次のページが存在するかを示すプロパティで、これがTrueの状態でイベントを愁傷するとVBはまだ次のページがあると判断し、もう1度このイベントを発生させます。

horiさんのプログラムではページの区別なく、同じ座標に同じ大きさの図形を描画しているので、
最後に描画したものだけが常に印刷されるのだと思います。
また、このイベントを終了するときはHasMorePageがFalseになっていますので、VBには2ページがあると認識されていないと思います。

印刷については、こちらでも説明していますのでよろしければ参考にしてください。
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard35.htm